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:
- Go
- Java
- Node.js
- Python
- .NET
- Ruby
- PHP
Watcher | Type | Author | Description |
---|---|---|---|
PostgreSQL WatcherEx | Database | @IguteChung | WatcherEx for PostgreSQL |
Redis WatcherEx | KV store | Casbin | WatcherEx for Redis |
Redis Watcher | KV store | @billcobbler | Watcher for Redis |
Etcd Watcher | KV store | Casbin | Watcher for etcd |
TiKV Watcher | KV store | Casbin | Watcher for TiKV |
Kafka Watcher | Messaging system | @wgarunap | Watcher for Apache Kafka |
NATS Watcher | Messaging system | Soluto | Watcher for NATS |
ZooKeeper Watcher | Messaging system | Grepsr | Watcher for Apache ZooKeeper |
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory | Messaging System | @rusenask | Watcher 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, InMemory | Messaging System | @bartventer | WatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure |
RocketMQ Watcher | Messaging system | @fmyxyz | Watcher for Apache RocketMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Etcd Adapter | KV store | @mapleafgo | Watcher for etcd |
Redis Watcher | KV store | Casbin | Watcher for Redis |
Lettuce-Based Redis Watcher | KV store | Casbin | Watcher for Redis based on Lettuce) |
Kafka Watcher | Messaging system | Casbin | Watcher for Apache Kafka |
Watcher | Type | Author | Description |
---|---|---|---|
Etcd Watcher | KV store | Casbin | Watcher for etcd |
Redis Watcher | KV store | Casbin | Watcher for Redis |
Pub/Sub Watcher | Messaging system | Casbin | Watcher for Google Cloud Pub/Sub |
MongoDB Change Streams Watcher | Database | Casbin | Watcher for MongoDB Change Streams |
Postgres Watcher | Database | @mcollina | Watcher for PostgreSQL |
Watcher | Type | Author | Description |
---|---|---|---|
Etcd Watcher | KV store | Casbin | Watcher for etcd |
Redis Watcher | KV store | Casbin | Watcher for Redis |
Redis Watcher | KV store | ScienceLogic | Watcher for Redis |
Redis Async Watcher | KV store | @kevinkelin | Watcher for Redis |
PostgreSQL Watcher | Database | Casbin | Watcher for PostgreSQL |
RabbitMQ Watcher | Messaging system | Casbin | Watcher for RabbitMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | @Sbou | Watcher for Redis |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | CasbinRuby | Watcher for Redis |
RabbitMQ Watcher | Messaging system | CasbinRuby | Watcher for RabbitMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | @Tinywan | Watcher for Redis |
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:
API | Descrizione |
---|---|
SetUpdateCallback(func(string)) errore | SetUpdateCallback 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() errore | Update 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) errore | UpdateForAddPolicy 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) error | UpdateForRemovePolicy 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) error | UpdateForRemoveFilteredPolicy 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) error | UpdateForSavePolicy 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) errore | UpdateForAddPolicies 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) errore | UpdateForRemovePolicies 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(). |