التعامل مع الأمان والأخطاء والتحذيرات والتسجيل

يغطي هذا القسم الموضوعات التالية:

الأمان

يمكن أن يعمل مصدر البيانات في أحد وضعَي الوصول على النحو التالي:

  • في وضع الوصول المقيّد، وهو الإعداد التلقائي، لا يعرض مصدر البيانات إلا تلك الطلبات التي تنشأ من النطاق نفسه الذي يتوفّر فيه مصدر البيانات. يمنع "وضع تقييد المحتوى" هجمات تزوير الطلبات من مواقع إلكترونية متعددة (XSRF)، ولذلك أكثر أمانًا من وضع الوصول غير المحدود. نظرًا لأن مكتبة مصادر البيانات توفر واجهة لعرض البيانات فقط، وليس لتغيير الحالة أو البيانات من جهة الخادم، تكون هجمات XSRF التي تحاول سرقة البيانات متاحة فقط. لجعل مصدر بياناتك آمنًا من محاولات سرقة البيانات، يجب استخدام وضع تقييد المحتوى جنبًا إلى جنب مع المصادقة المستندة إلى ملفات تعريف الارتباط. تعتمد طريقة مصادقة المستخدمين على بيئتك وتنفيذها.

  • في وضع الوصول غير المحدود، يعرض مصدر البيانات جميع الطلبات بغض النظر عن مصدرها. ويمكن حماية مصدر البيانات الذي يتم تشغيله في "وضع تقييد المحتوى" من خلال المصادقة المستندة إلى ملفات تعريف الارتباط، ولكن يُرجى العلم أنّ مصدر البيانات سيكون عرضةً لهجمات XSRF. استخدِم "وضع تقييد المحتوى" إذا كانت المرئيات على صفحات الويب خارج نطاق مصدر البيانات تحتاج إلى الوصول إلى مصدر البيانات، أو إذا كانت البيانات في النطاق العام وبالتالي لا تحتاج إلى حمايتها.

يمكن لطلب التصور تحديد تنسيق استجابة هو JSON أو CSV أو HTML. يحدد تنسيق الاستجابة التنسيق الذي يرجع به مصدر البيانات جدول بيانات. نظرًا لأن تنسيقات CSV وHTML ليست عرضة لهجمات XSRF، فيمكن الوصول إليها من نطاقات أخرى، حتى في وضع تقييد المحتوى.

لتحديد وضع عدم تقييد المحتوى، يمكنك إلغاء isRestrictedAccessMode() على النحو التالي:

  @Override
  protected boolean isRestrictedAccessMode() {
    return false;
  }

للتبسيط، يتم تشغيل جميع الأمثلة المتوفرة مع المكتبة في وضع الوصول غير المقيّد.

الأخطاء والتحذيرات

عندما يتعذّر عرض جدول بيانات صالح أو لا يُنصح به، ستعرض المكتبة الرمز DataSourceException. على سبيل المثال، إذا لم تتمكن من مصادقة المستخدم. تطرح المكتبة هذه الاستثناءات عندما تمنعها الأخطاء من إنشاء جدول بيانات. قد ترغب في طرح استثناءات في مواقف فريدة لمصدر بياناتك. إذا كان الأمر كذلك، عليك إنشاء أنواع استثناءات الأخطاء من خلال اكتسابها من الفئة DataSourceException. ويمكنك أيضًا طرح الفئة DataSourceException مباشرةً.

توجد الفئة DataSourceException في الحزمة base، وتأخذ المعلمات التالية:

  • ReasonType 
    هذه المَعلمة إلزامية. يتم تحديد أنواع الأسباب المتاحة في تعداد ReasonType. إذا لم يكن أيّ من أنواع الأسباب المتوفّرة مناسبًا، يمكنك استخدام Other أو Internal.
     
  • MessageToUser 
    تحدّد هذه المَعلمة نص رسالة الخطأ. في معظم الحالات، يتم عرض هذا النموذج للمستخدم كتلميح، لذا من المهم عدم تضمين معلومات فنية أو سرية.

يمكنك استخدام مجموعة الدوال المساعدة في datasource.DataSourceHelper لمعالجة الأخطاء. في هذه الحالة، يمكنك استدعاء دالتين بالاسم نفسه setErrorServletResponse لأخذ DataSourceException وتعيين خطأ في استجابة serlet للبيانات. تستخدم إحدى هذه الدوال طلب مصدر بيانات، والدالة الأخرى تأخذ HttpServlet request ويتم استخدامها في الحالات التي يتعذر فيها إنشاء DataSourceRequest. في ما يلي مثال على عملية التنفيذ في تحديد الإمكانيات وتدفق الأحداث.

إذا كان لا يمكن إرجاع جدول بيانات، فستعرض المكتبة خطأ. إذا كان من الممكن إرجاع جدول بيانات، ولكن توجد مشكلة للإبلاغ، تعرض المكتبة تحذيرًا مع جدول البيانات. على سبيل المثال، تنشئ المكتبة تحذيرًا في الحالات التالية:

  • إذا كان العرض المرئي لطلب البحث يوفّر LIMIT، ما يؤدي إلى اقتطاع البيانات.
  • إذا كان التمثيل البصري لطلب البحث يطلب نمط تنسيق غير صالح في إحدى فقرات FORMAT.

لإضافة تحذيرك الخاص، يمكنك إنشاء مثيل من base.Warning وإضافته إلى جدول البيانات باستخدام الطريقة addWarning().

التسجيل

تستخدم المكتبة قطع الأشجار في جاكرتا كومنز. يمكن استخدام تسجيل الدخول في جاكرتا مع معظم أنظمة التسجيل الشائعة التي قد تكون لديك بالفعل. قد تحتاج إلى كتابة محوّل إذا كان نظام التسجيل لديك غير عادي. لمزيد من التفاصيل، يُرجى الاطّلاع على الصفحة الرئيسية لتسجيل Jakartacommons.

عندما يتم طرح استثناء، يتم إرسال المعلومات إلى السجل. تعتمد طريقة الوصول إلى السجل على نظام التسجيل الذي تستخدمه.