Watchers
Ми підтримуємо використання розподілених систем обміну повідомленнями, таких як etcd, для підтримки узгодженості між кількома екземплярами Casbin enforcer. Це дозволяє нашим користувачам одночасно використовувати кілька Casbin enforcers для обробки великої кількості запитів на перевірку дозволів.
Подібно до адаптерів зберігання політик, ми не включаємо код спостерігача до основної бібліотеки. Будь-яка підтримка нової системи обміну повідомленнями повинна бути реалізована як спостерігач. Повний список спостерігачів Casbin наведено нижче. Ми вітаємо будь-які сторонні внески для нового спостерігача, будь ласка, повідомте нас, і ми додамо його до цього списку:
- 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
Для підтримки інкрементної синхронізації між кількома екземплярами ми надаємо інтерфейс WatcherEx
. Ми сподіваємося, що він може повідомляти інші екземпляри, коли політика змінюється, але наразі немає реалізації WatcherEx
. Ми рекомендуємо використовувати диспетчер для досягнення цього.
Порівняно з інтерфейсом Watcher
, WatcherEx
може відрізняти, який тип дії оновлення отримано, наприклад, AddPolicy
та RemovePolicy
.
API WatcherEx:
API | Опис |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback встановлює функцію зворотного виклику, яку спостерігач викликатиме, коли політика в базі даних змінена іншими екземплярами. Класичний зворотний виклик - Enforcer.LoadPolicy(). |
Update() error | Update викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Зазвичай викликається після зміни політики в базі даних, наприклад, Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy() тощо. |
Close() | Close зупиняє та звільняє спостерігача, функція зворотного виклику більше не буде викликатися. |
UpdateForAddPolicy(sec, ptype string, params ...string) error | UpdateForAddPolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після додавання політики через Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() та Enforcer.AddNamedGroupingPolicy(). |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UpdateForRemovePolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після видалення політики через Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() та Enforcer.RemoveNamedGroupingPolicy(). |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() та Enforcer.RemoveFilteredNamedGroupingPolicy(). |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.SavePolicy() |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() та Enforcer.AddNamedGroupingPolicies(). |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() та Enforcer.RemoveNamedGroupingPolicies(). |