Ir al contenido principal

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:

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

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:

APIDescripción
SetUpdateCallback(func(string)) errorSetUpdateCallback 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() errorUpdate 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) errorUpdateForAddPolicy 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) errorUpdateForRemovePolicy 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) errorUpdateForRemoveFilteredPolicy 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) errorUpdateForSavePolicy 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) errorUpdateForAddPolicies 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) errorUpdateForRemovePolicies 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().