Watchers
Nous soutenons l'utilisation de systèmes de messagerie distribués comme etcd pour maintenir la cohérence entre plusieurs instances de l'exécuteur Casbin. Cela permet à nos utilisateurs d'utiliser simultanément plusieurs exécuteurs Casbin pour gérer un grand nombre de demandes de vérification des autorisations.
Semblable aux adaptateurs de stockage de politiques, nous n'incluons pas le code du watcher dans la bibliothèque principale. Tout support pour un nouveau système de messagerie doit être implémenté en tant que watcher. Une liste complète des watchers Casbin est fournie ci-dessous. Nous accueillons toute contribution de tiers pour un nouveau watcher, veuillez nous en informer et nous l'ajouterons à cette liste :
- 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
Afin de soutenir la synchronisation incrémentielle entre plusieurs instances, nous fournissons l'interface WatcherEx
. Nous espérons qu'il peut notifier les autres instances lorsque la politique change, mais il n'y a actuellement aucune implémentation de WatcherEx
. Nous vous recommandons d'utiliser le dispatcher pour y parvenir.
Comparé à l'interface Watcher
, WatcherEx
peut distinguer quel type d'action de mise à jour est reçu, par exemple, AddPolicy
et RemovePolicy
.
Apis WatcherEx :
API | Description |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback définit la fonction de rappel que le watcher appellera, lorsque la politique dans la base de données a été modifiée par d'autres instances. Un rappel classique est Enforcer.LoadPolicy(). |
Update() error | Update appelle la fonction de rappel de mise à jour des autres instances pour synchroniser leur politique. Il est généralement appelé après avoir modifié la politique dans la base de données, comme Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), etc. |
Close() | Close arrête et libère le watcher, la fonction de rappel ne sera plus appelée. |
UpdateForAddPolicy(sec, ptype string, params ...string) error | UpdateForAddPolicy appelle la fonction de rappel de mise à jour des autres instances pour synchroniser leur politique. Il est appelé après qu'une politique a été ajoutée via Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() et Enforcer.AddNamedGroupingPolicy(). |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UpdateForRemovePolicy appelle la fonction de rappel de mise à jour des autres instances pour synchroniser leur politique. Il est appelé après qu'une politique a été supprimée par Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() et Enforcer.RemoveNamedGroupingPolicy(). |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy appelle la fonction de rappel de mise à jour des autres instances pour synchroniser leur politique. Il est appelé après Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() et Enforcer.RemoveFilteredNamedGroupingPolicy(). |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy appelle la fonction de rappel de mise à jour des autres instances pour synchroniser leur politique. Il est appelé après Enforcer.SavePolicy() |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies appelle la fonction de rappel de mise à jour des autres instances pour synchroniser leur politique. Il est appelé après Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() et Enforcer.AddNamedGroupingPolicies(). |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies appelle la fonction de rappel de mise à jour des autres instances pour synchroniser leur politique. Il est appelé après Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() et Enforcer.RemoveNamedGroupingPolicies(). |