Watchers
Apoyamos el uso de sistemas de mensajería distribuidos como etcd para mantener la consistencia entre múltiples instancias del enforcer de Casbin. Esto permite a nuestros usuarios utilizar concurrentemente múltiples enforcers de Casbin para manejar un gran número de solicitudes de verificación de permisos.
Similar a los adaptadores de almacenamiento de políticas, no incluimos el código del watcher en la biblioteca principal. Cualquier soporte para un nuevo sistema de mensajería debe ser implementado como un watcher. Una lista completa de los watchers de Casbin se proporciona a continuación. Damos la bienvenida a cualquier contribución de terceros para un nuevo watcher, por favor infórmenos y lo añadiremos 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 apoyar la sincronización incremental entre múltiples instancias, proporcionamos la interfaz WatcherEx
. Esperamos que pueda notificar a otras instancias cuando la política cambie, pero actualmente no hay ninguna implementación de WatcherEx
. Recomendamos que utilice dispatcher para lograr esto.
En comparación con la interfaz Watcher
, WatcherEx
puede distinguir qué tipo de acción de actualización se recibe, por ejemplo, AddPolicy
y RemovePolicy
.
Apis de WatcherEx:
API | Descripción |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback establece la función de callback que el watcher llamará, cuando la política en la base de datos haya sido cambiada por otras instancias. Un callback clásico es Enforcer.LoadPolicy(). |
Update() error | Update llama al callback de actualización de otras instancias para sincronizar su política. Se suele llamar después de cambiar la política en la base de datos, como Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), etc. |
Close() | Close detiene y libera el watcher, la función de callback no será llamada más. |
UpdateForAddPolicy(sec, ptype string, params ...string) error | UpdateForAddPolicy llama al callback de actualización de otras instancias para sincronizar su política. Se llama después de que se añade una política a través de Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() y Enforcer.AddNamedGroupingPolicy(). |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UpdateForRemovePolicy llama al callback de actualización de otras instancias para sincronizar su política. Se llama después de que se elimina una política por Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() y Enforcer.RemoveNamedGroupingPolicy(). |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy llama al callback de actualización de otras instancias para sincronizar su política. Se llama después de Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() y Enforcer.RemoveFilteredNamedGroupingPolicy(). |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy llama al callback de actualización de otras instancias para sincronizar su política. Se llama después de Enforcer.SavePolicy() |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies llama al callback de actualización de otras instancias para sincronizar su política. Se llama después de Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() y Enforcer.AddNamedGroupingPolicies(). |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies llama al callback de actualización de otras instancias para sincronizar su política. Se llama después de Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() y Enforcer.RemoveNamedGroupingPolicies(). |