Watchers
Nós apoiamos o uso de sistemas de mensagens distribuídas como etcd para manter a consistência entre múltiplas instâncias do Casbin enforcer. Isto permite que nossos usuários usem simultaneamente múltiplos enforcers do Casbin para lidar com um grande número de solicitações de verificação de permissões.
Semelhante aos adaptadores de armazenamento de políticas, nós não incluímos o código do watcher na biblioteca principal. Qualquer suporte para um novo sistema de mensagens deve ser implementado como um watcher. Uma lista completa dos watchers do Casbin é fornecida abaixo. Nós damos as boas-vindas a qualquer contribuição de terceiros para um novo watcher, por favor nos informe e nós o adicionaremos a esta lista:
- 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
Para apoiar a sincronização incremental entre múltiplas instâncias, nós fornecemos a interface WatcherEx
. Esperamos que ela possa notificar outras instâncias quando a política mudar, mas atualmente não há implementação do WatcherEx
. Nós recomendamos que você use o dispatcher para alcançar isso.
Comparado com a interface Watcher
, WatcherEx
pode distinguir que tipo de ação de atualização é recebida, por exemplo, AddPolicy
e RemovePolicy
.
Apis do WatcherEx:
API | Descrição |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback define a função de callback que o watcher chamará, quando a política no DB for alterada por outras instâncias. Um callback clássico é Enforcer.LoadPolicy(). |
Update() error | Update chama o callback de atualização de outras instâncias para sincronizar sua política. É geralmente chamado após mudar a política no DB, como Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), etc. |
Close() | Close para e libera o watcher, a função de callback não será mais chamada. |
UpdateForAddPolicy(sec, ptype string, params ...string) error | UpdateForAddPolicy chama o callback de atualização de outras instâncias para sincronizar sua política. É chamado após uma política ser adicionada via Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() e Enforcer.AddNamedGroupingPolicy(). |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UpdateForRemovePolicy chama o callback de atualização de outras instâncias para sincronizar sua política. É chamado após uma política ser removida por Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() e Enforcer.RemoveNamedGroupingPolicy(). |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy chama o callback de atualização de outras instâncias para sincronizar sua política. É chamado após Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() e Enforcer.RemoveFilteredNamedGroupingPolicy(). |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy chama o callback de atualização de outras instâncias para sincronizar sua política. É chamado após Enforcer.SavePolicy() |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies chama o callback de atualização de outras instâncias para sincronizar sua política. É chamado após Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() e Enforcer.AddNamedGroupingPolicies(). |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies chama o callback de atualização de outras instâncias para sincronizar sua política. É chamado após Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() e Enforcer.RemoveNamedGroupingPolicies(). |