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:
Effectadalah keputusan akhir yang digabungkan oleh fungsi ini (diinisialisasi sebagaiIndeterminate).explainIndexadalah indekseft(AllowatauDeny), dan ia diinisialisasi sebagai-1.errdigunakan untuk memeriksa sama ada kesan disokong.expradalah perwakilan rentetan kesan dasar.effectsadalah tatasusunan kesan, yang boleh menjadiAllow,Indeterminate, atauDeny.matchesialah tatasusunan yang menunjukkan sama ada hasilnya sepadan dengan dasar.policyIndexialah indeks dasar dalam model.policyLengthialah 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.