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:
- Go
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
veyaReddet
) 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
veyaReddet
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:
- Go
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.
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.