Ana içeriğe atla

Effector

Effect, bir politika kuralının sonucunu temsil eder ve Effector, Casbin'deki etkileri yönetmek için arayüzdür.

MergeEffects()

MergeEffects() fonksiyonu, tüm eşleşme sonuçlarını zorlayıcı tarafından toplanan tek bir kararla birleştirmek için kullanılır.

Örneğin:

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

Bu örnekte:

  • Effect, bu fonksiyon tarafından birleştirilen nihai karardır (Belirsiz olarak başlatılır).
  • explainIndex, eft (İzin Ver veya Reddet) indeksidir ve -1 olarak başlatılır.
  • err, etkinin desteklenip desteklenmediğini kontrol etmek için kullanılır.
  • expr, politika etkilerinin dize temsilidir.
  • effects, İzin Ver, Belirsiz veya Reddet olabilen bir etki dizisidir.
  • matches, sonuçların politikayla eşleşip eşleşmediğini gösteren bir dizi.
  • policyIndex, politikanın modeldeki indeksi.
  • policyLength, politikanın uzunluğu.

Yukarıdaki kod, parametrelerin MergeEffects() fonksiyonuna nasıl iletileceğini ve fonksiyonun expr temelinde etkileri ve eşleşmeleri nasıl işleyeceğini göstermektedir.

Effector kullanmak için şu adımları izleyin:

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

MergeEffects()'in temel fikri, expr sonuçlarla eşleşebiliyorsa, p_eft'nin allow olduğunu gösteriyorsa, tüm etkilerin birleştirilebilmesidir. Eğer reddetme kuralları eşleşmezse, karar izin verilir.

not

Eğer expr koşul "priority(p_eft) || deny" ile eşleşmezse ve policyIndex policyLength-1'den kısaysa, ortadaki bazı etkiler kısa devre yapılacaktır.