Effector
Effect
mewakili hasil dari peraturan dasar, dan Effector
adalah antara muka untuk mengendalikan kesan dalam Casbin.
MergeEffects()
Fungsi MergeEffects()
digunakan untuk menggabungkan semua hasil padanan yang dikumpulkan oleh enforcer menjadi satu keputusan tunggal.
Contohnya:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Dalam contoh ini:
Effect
adalah keputusan akhir yang digabungkan oleh fungsi ini (diinisialisasi sebagaiIndeterminate
).explainIndex
adalah indekseft
(Allow
atauDeny
), dan ia diinisialisasi sebagai-1
.err
digunakan untuk memeriksa sama ada kesan disokong.expr
adalah perwakilan rentetan kesan dasar.effects
adalah tatasusunan kesan, yang boleh menjadiAllow
,Indeterminate
, atauDeny
.matches
ialah tatasusunan yang menunjukkan sama ada hasilnya sepadan dengan dasar.policyIndex
ialah indeks dasar dalam model.policyLength
ialah panjang dasar.
Kod di atas menunjukkan cara untuk menyampaikan parameter kepada fungsi MergeEffects()
, dan fungsi ini akan memproses kesan dan padanan berdasarkan expr
.
Untuk menggunakan Effector
, ikuti langkah-langkah ini:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Idea asas MergeEffects()
ialah jika expr
boleh sepadan dengan hasil, menunjukkan bahawa p_eft
ialah allow
, maka semua kesan boleh digabungkan. Jika tiada peraturan tolak yang disepadankan, maka keputusannya ialah benarkan.
Jika expr
tidak sepadan dengan syarat "priority(p_eft) || deny"
, dan policyIndex
lebih pendek daripada policyLength-1
, ia akan short-circuit beberapa kesan di tengah-tengah.