Effector
Effect
คือผลลัพธ์ของกฎนโยบาย และ Effector
เป็นอินเทอร์เฟซสำหรับจัดการผลลัพธ์ใน Casbin
MergeEffects()
ฟังก์ชัน MergeEffects()
ใช้เพื่อรวมผลลัพธ์ที่ตรงกันทั้งหมดที่ถูกรวบรวมโดยตัวบังคับให้เป็นการตัดสินใจเดียว
ตัวอย่างเช่น:
- Go
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
ให้ทำตามขั้นตอนเหล่านี้:
- Go
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 ผลลัพธ์บางอย่างในระหว่างนั้น