Vai al contenuto principale

Watchers

Supportiamo l'uso di sistemi di messaggistica distribuita come etcd per mantenere la coerenza tra più istanze di enforcer di Casbin. Ciò consente ai nostri utenti di utilizzare contemporaneamente più enforcer di Casbin per gestire un gran numero di richieste di verifica delle autorizzazioni.

Simile agli adattatori di archiviazione delle policy, non includiamo il codice degli osservatori nella libreria principale. Qualsiasi supporto per un nuovo sistema di messaggistica dovrebbe essere implementato come un watcher. Di seguito è fornito un elenco completo dei watcher di Casbin. Accogliamo con favore qualsiasi contributo di terze parti per un nuovo watcher, per favore informateci e lo aggiungeremo a questo elenco:

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

Al fine di supportare la sincronizzazione incrementale tra più istanze, forniamo l'interfaccia WatcherEx. Speriamo che possa notificare altre istanze quando le policy cambiano, ma attualmente non esiste un'implementazione di WatcherEx. Consigliamo di utilizzare il dispatcher per raggiungere questo obiettivo.

Rispetto all'interfaccia Watcher, WatcherEx può distinguere il tipo di azione di aggiornamento ricevuta, ad esempio, AddPolicy e RemovePolicy.

API di WatcherEx:

APIDescrizione
SetUpdateCallback(func(string)) erroreSetUpdateCallback imposta la funzione di callback che il watcher chiamerà quando la policy nel DB è stata modificata da altre istanze. Una classica callback è Enforcer.LoadPolicy().
Update() erroreUpdate chiama la callback di aggiornamento di altre istanze per sincronizzare la loro policy. Di solito viene chiamato dopo aver modificato la policy nel DB, come Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), ecc.
Close()Close interrompe e rilascia il watcher, la funzione di callback non verrà più chiamata.
UpdateForAddPolicy(sec, ptype string, params ...string) erroreUpdateForAddPolicy chiama il callback di aggiornamento di altre istanze per sincronizzare le loro policy. Viene chiamato dopo che una policy è stata aggiunta tramite Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() e Enforcer.AddNamedGroupingPolicy().
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUpdateForRemovePolicy chiama il callback di aggiornamento di altre istanze per sincronizzare le loro policy. Viene chiamato dopo che una policy è stata rimossa da Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() e Enforcer.RemoveNamedGroupingPolicy().
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy chiama il callback di aggiornamento di altre istanze per sincronizzare le loro policy. Viene chiamato dopo Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() e Enforcer.RemoveFilteredNamedGroupingPolicy().
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy chiama il callback di aggiornamento di altre istanze per sincronizzare le loro policy. Viene chiamato dopo Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) erroreUpdateForAddPolicies chiama il callback di aggiornamento di altre istanze per sincronizzare le loro politiche. Viene chiamato dopo Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() e Enforcer.AddNamedGroupingPolicies().
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) erroreUpdateForRemovePolicies chiama il callback di aggiornamento di altre istanze per sincronizzare le loro politiche. Viene chiamato dopo Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() e Enforcer.RemoveNamedGroupingPolicies().