ข้ามไปยังเนื้อหาหลัก

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 ผลลัพธ์บางอย่างในระหว่างนั้น