تمت ترجمة هذه الوثائق تلقائيًا بواسطة الذكاء الاصطناعي.
تُستخدم ACL (قائمة التحكم بالوصول) للتحكم في صلاحيات عمليات الموارد. يمكنك منح الصلاحيات للأدوار، أو تجاوز قيود الأدوار وتحديد الصلاحيات مباشرةً. يوفر نظام ACL آلية مرنة لإدارة الصلاحيات، تدعم مقتطفات الصلاحيات (Snippets)، والبرمجيات الوسيطة (Middleware)، والتحقق الشرطي، وطرقًا أخرى متعددة.
كائنات ACL تنتمي إلى مصادر البيانات (dataSource.acl). يمكن الوصول إلى ACL لمصدر البيانات الرئيسي عبر app.acl. لاستخدام ACL لمصادر البيانات الأخرى، راجع فصل إدارة مصادر البيانات.
تُمكن مقتطفات الصلاحيات (Snippets) من تسجيل مجموعات الصلاحيات الشائعة كوحدات صلاحيات قابلة لإعادة الاستخدام. بعد ربط الدور بمقتطف، يحصل على مجموعة الصلاحيات المقابلة، مما يقلل من التكوين المتكرر ويحسن كفاءة إدارة الصلاحيات.
تُستخدم acl.allow() للسماح لبعض العمليات بتجاوز قيود الأدوار، وهي مناسبة لواجهات برمجة التطبيقات العامة (APIs)، والسيناريوهات التي تتطلب تقييمًا ديناميكيًا للصلاحيات، أو الحالات التي يحتاج فيها تحديد الصلاحيات إلى أن يستند إلى سياق الطلب.
وصف معلمة condition:
'public': يمكن لأي مستخدم (بما في ذلك المستخدمين غير المسجلين دخولهم) الوصول دون أي مصادقة.'loggedIn': يمكن للمستخدمين المسجلين دخولهم فقط الوصول، ويتطلب هوية مستخدم صالحة.(ctx) => Promise<boolean> أو (ctx) => boolean: دالة مخصصة تحدد ديناميكيًا ما إذا كان الوصول مسموحًا به بناءً على سياق الطلب، ويمكنها تنفيذ منطق صلاحيات معقد.تُستخدم acl.use() لتسجيل برمجيات وسيطة مخصصة للصلاحيات، مما يسمح بإدراج منطق مخصص في سير عمل فحص الصلاحيات. تُستخدم عادةً بالاقتران مع ctx.permission لقواعد الصلاحيات المخصصة. وهي مناسبة للسيناريوهات التي تتطلب تحكمًا غير تقليدي في الصلاحيات، مثل النماذج العامة التي تحتاج إلى التحقق من كلمة مرور مخصصة، أو فحوصات الصلاحيات الديناميكية بناءً على معلمات الطلب، وما إلى ذلك.
سيناريوهات التطبيق النموذجية:
التحكم في الصلاحيات عبر ctx.permission:
وصف خاصية ctx.permission:
skip: true: يتجاوز فحوصات صلاحيات ACL اللاحقة ويسمح بالوصول مباشرةً.يمكن لـ addFixedParams إضافة قيود نطاق بيانات ثابتة (فلتر) لعمليات موارد معينة. تتجاوز هذه القيود قيود الأدوار وتُطبق مباشرةً، وتُستخدم عادةً لحماية بيانات النظام الحساسة.
تلميح: يمكن استخدام
addFixedParamsلمنع حذف أو تعديل البيانات الحساسة عن طريق الخطأ، مثل أدوار النظام المضمنة، وحسابات المسؤولين، وما إلى ذلك. تعمل هذه القيود بالاشتراك مع صلاحيات الأدوار، مما يضمن أنه حتى مع وجود الصلاحيات، لا يمكن التلاعب بالبيانات المحمية.
تُستخدم acl.can() للتحقق مما إذا كان الدور يمتلك صلاحية لتنفيذ عملية محددة، وتُعيد كائن نتيجة الصلاحية أو null. تُستخدم عادةً للتحقق ديناميكيًا من الصلاحيات في منطق الأعمال، مثل تحديد ما إذا كانت عمليات معينة مسموح بها بناءً على الأدوار في البرمجيات الوسيطة أو معالجات العمليات.
تلميح: إذا تم تمرير أدوار متعددة، فسيتم فحص كل دور على حدة، وسيتم إرجاع النتيجة للدور الأول الذي يمتلك الصلاحية.
تعريفات الأنواع:
إذا كنت ترغب في أن تكون العمليات المخصصة قابلة للتهيئة في الواجهة (مثل عرضها في صفحة إدارة الأدوار)، فأنت بحاجة إلى استخدام setAvailableAction لتسجيلها. ستظهر العمليات المسجلة في واجهة تهيئة الصلاحيات، حيث يمكن للمسؤولين تهيئة صلاحيات العمليات للأدوار المختلفة.
وصف المعلمات:
{{t("key")}}).'new-data': العمليات التي تنشئ بيانات جديدة (مثل الاستيراد، الإنشاء، إلخ).'existing-data': العمليات التي تعدل البيانات الموجودة (مثل التحديث، الحذف، إلخ).'new-data'.