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(). |