Lewati ke konten utama

Effector

Effect mewakili hasil dari suatu aturan kebijakan, dan Effector adalah antarmuka untuk menangani efek dalam Casbin.

MergeEffects()

Fungsi MergeEffects() digunakan untuk menggabungkan semua hasil kecocokan 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 dari eft (Allow atau Deny), dan diinisialisasi sebagai -1.
  • err digunakan untuk memeriksa apakah efek tersebut didukung.
  • expr adalah representasi string dari efek kebijakan.
  • effects adalah sebuah array efek, yang dapat berupa Allow, Indeterminate, atau Deny.
  • matches adalah sebuah array yang menunjukkan apakah hasilnya sesuai dengan kebijakan.
  • policyIndex adalah indeks dari kebijakan dalam model.
  • policyLength adalah panjang dari kebijakan.

Kode di atas mengilustrasikan cara untuk mengirimkan parameter ke fungsi MergeEffects(), dan fungsi tersebut akan memproses efek dan kecocokan berdasarkan expr.

Untuk menggunakan Effector, ikuti langkah-langkah berikut:

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

Ide dasar dari MergeEffects() adalah jika expr dapat mencocokkan hasil, menunjukkan bahwa p_eft adalah allow, maka semua efek dapat digabungkan. Jika tidak ada aturan deny yang cocok, maka keputusannya adalah izinkan.

catatan

Jika expr tidak cocok dengan kondisi "priority(p_eft) || deny", dan policyIndex lebih pendek dari policyLength-1, maka akan short-circuit beberapa efek di tengah.