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

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

الأمان

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

  • في وضع تقييد الوصول، وهو الوضع الافتراضي، لا يعرض مصدر البيانات إلا الطلبات التي تنشأ من النطاق نفسه حيث يوجد مصدر البيانات. يمنع وضع تقييد المحتوى هجمات تزييف الطلبات عبر المواقع (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 وإعداد خطأ في استجابة خادم البيانات. تستخدم إحدى هذه الدوال طلب مصدر بيانات، في حين تقبل الأخرى HttpServlet request ويتم استخدامها في الحالات التي يتعذّر فيها إنشاء DataSourceRequest. يتوفر مثال على التنفيذ في تعريف الإمكانات وتدفق الأحداث.

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

  • إذا كان التمثيل البصري لطلب البحث يوفر LIMIT وينتج عنه بيانات مقتطعة.
  • إذا كان التمثيل البصري لطلب البحث يطلب نمط تنسيق غير صالح في عبارة FORMAT.

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

التسجيل

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

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