Ana içeriğe atla

Watchers

Birden fazla Casbin uygulayıcı örneği arasında tutarlılığı sağlamak için etcd gibi dağıtık mesajlaşma sistemlerinin kullanımını destekliyoruz. Bu, kullanıcılarımızın büyük sayıda izin kontrolü isteğini işlemek için birden fazla Casbin uygulayıcıyı eşzamanlı kullanmalarına olanak tanır.

Politika depolama adaptörlerine benzer şekilde, izleyici kodunu ana kütüphaneye dahil etmiyoruz. Yeni bir mesajlaşma sistemi için herhangi bir destek, bir izleyici olarak uygulanmalıdır. Casbin izleyicilerinin tam listesi aşağıda verilmiştir. Yeni bir izleyici için herhangi bir üçüncü taraf katkısına açığız, lütfen bize bildirin ve bu listeye ekleyeceğiz:

WatcherTypeAuthorDescription
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExKV storeCasbinWatcherEx for Redis
Redis WatcherKV store@billcobblerWatcher for Redis
Etcd WatcherKV storeCasbinWatcher for etcd
TiKV WatcherKV storeCasbinWatcher for TiKV
Kafka WatcherMessaging system@wgarunapWatcher for Apache Kafka
NATS WatcherMessaging systemSolutoWatcher for NATS
ZooKeeper WatcherMessaging systemGrepsrWatcher for Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@rusenaskWatcher based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@bartventerWatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
RocketMQ WatcherMessaging system@fmyxyzWatcher for Apache RocketMQ

WatcherEx

Birden fazla örnek arasında artımlı senkronizasyonu desteklemek için WatcherEx arayüzünü sağlıyoruz. Diğer örnekleri politika değişiklikleri durumunda bilgilendirebileceğini umuyoruz, ancak şu anda WatcherEx için bir uygulama bulunmamaktadır. Bunu başarmak için dağıtıcı kullanmanızı öneririz.

Watcher arayüzüne kıyasla, WatcherEx alınan güncelleme eyleminin türünü ayırt edebilir, örneğin, AddPolicy ve RemovePolicy.

WatcherEx API'leri:

APIAçıklama
SetUpdateCallback(func(string)) hataSetUpdateCallback, izleyici tarafından çağrılacak geri çağırma işlevini ayarlar; bu, DB'deki politikanın diğer örnekler tarafından değiştirilmesi durumunda gerçekleşir. Klasik bir geri çağırma örneği Enforcer.LoadPolicy()'dir.
Update() hataUpdate, politikalarını senkronize etmek için diğer örneklerin güncelleme geri çağırmasını çağırır. Genellikle DB'deki politikayı değiştirdikten sonra, Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy() vb. gibi işlemlerden sonra çağrılır.
Kapat()Close, izleyiciyi durdurur ve serbest bırakır, geri çağırma işlevi artık çağrılmayacaktır.
UpdateForAddPolicy(sec, ptype string, params ...string) hataUpdateForAddPolicy, diğer örneklerin güncelleme geri çağrısını çağırarak politikalarını senkronize eder. Bu, bir politika Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() ve Enforcer.AddNamedGroupingPolicy() yoluyla eklendikten sonra çağrılır.
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUpdateForRemovePolicy, diğer örneklerin güncelleme geri çağrısını çağırarak politikalarını senkronize eder. Bu, bir politika Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() ve Enforcer.RemoveNamedGroupingPolicy() tarafından kaldırıldıktan sonra çağrılır.
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy, diğer örneklerin güncelleme geri çağrısını çağırarak politikalarını senkronize eder. Bu, Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() ve Enforcer.RemoveFilteredNamedGroupingPolicy() sonrasında çağrılır.
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy, diğer örneklerin güncelleme geri çağrısını çağırarak politikalarını senkronize eder. Enforcer.SavePolicy() sonrası çağrılır.
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies, diğer örneklerin güncelleme geri aramasını çağırarak politikalarını senkronize eder. Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() ve Enforcer.AddNamedGroupingPolicies() sonrası çağrılır.
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies, diğer örneklerin güncelleme geri aramasını çağırarak politikalarını senkronize eder. Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() ve Enforcer.RemoveNamedGroupingPolicies() sonrası çağrılır.