Effector
Effect คือผลลัพธ์ของกฎนโยบาย และ Effector เป็นอินเทอร์เฟซสำหรับจัดการผลลัพธ์ใน Casbin
MergeEffects()
ฟังก์ชัน MergeEffects() ใช้เพื่อรวมผลลัพธ์ที่ตรงกันทั้งหมดที่ถูกรวบรวมโดยตัวบังคับให้เป็นการตัดสินใจเดียว
ตัวอย่างเช่น:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
ในตัวอย่างนี้:
Effectเป็นการตัดสินใจสุดท้ายที่ถูกรวมโดยฟังก์ชันนี้ (เริ่มต้นด้วยIndeterminate)explainIndexเป็นดัชนีของeft(AllowหรือDeny) และเริ่มต้นด้วย-1errใช้เพื่อตรวจสอบว่าผลลัพธ์ได้รับการสนับสนุนหรือไม่exprเป็นการแสดงผลลัพธ์ของนโยบายในรูปแบบสตริงeffectsเป็นอาร์เรย์ของผลลัพธ์ ซึ่งอาจเป็นAllow,Indeterminate, หรือDenymatchesเป็นอาร์เรย์ที่บ่งบอกว่าผลลัพธ์ตรงกับนโยบายหรือไม่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 ผลลัพธ์บางอย่างในระหว่างนั้น