Langkau ke kandungan utama

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:

Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

Dalam contoh ini:

  • Effect adalah keputusan akhir yang digabungkan oleh fungsi ini (diinisialisasi sebagai Indeterminate).
  • explainIndex adalah indeks eft (Allow atau Deny), 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 menjadi Allow, Indeterminate, atau Deny.
  • 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:

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.

nota

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.