التخطي إلى المحتوى الرئيسي

Effector

يمثل Effect نتيجة قاعدة سياسة، وEffector هو الواجهة للتعامل مع الآثار في Casbin.

MergeEffects()

تُستخدم الدالة MergeEffects() لدمج جميع النتائج المتطابقة التي يجمعها المنفذ في قرار واحد.

على سبيل المثال:

Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

في هذا المثال:

  • Effect هو القرار النهائي الذي يتم دمجه بواسطة هذه الوظيفة (يتم تهيئته كـ Indeterminate).
  • explainIndex هو فهرس eft (Allow أو Deny)، ويتم تهيئته كـ -1.
  • err يُستخدم للتحقق مما إذا كان الأثر مدعومًا.
  • expr هو التمثيل النصي لآثار السياسة.
  • effects هو مصفوفة من الآثار، والتي يمكن أن تكون Allow، Indeterminate، أو Deny.
  • matches هو مصفوفة تشير إلى ما إذا كانت النتيجة تتطابق مع السياسة.
  • policyIndex هو فهرس السياسة في النموذج.
  • policyLength هو طول السياسة.

يوضح الكود أعلاه كيفية تمرير المعاملات إلى الدالة MergeEffects()، وستقوم الوظيفة بمعالجة الآثار والتطابقات بناءً على expr.

لكي تستخدم Effector، اتبع هذه الخطوات:

var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

الفكرة الأساسية لـ MergeEffects() هي أنه إذا كان expr يمكن أن يطابق النتائج، مما يشير إلى أن p_eft هو allow، فإن جميع الآثار يمكن دمجها. إذا لم تتطابق أي قواعد رفض، فإن القرار يكون السماح.

ملاحظة

إذا لم يطابق expr الشرط 'priority(p_eft) || deny'، وكان policyIndex أقصر من policyLength-1، فسوف يقوم بـ short-circuit بعض الآثار في المنتصف.