Перейти к основному контенту

Наблюдатели

We support the use of distributed messaging systems like etcd to maintain consistency between multiple Casbin enforcer instances. This allows our users to concurrently use multiple Casbin enforcers to handle a large number of permission checking requests.

Similar to policy storage adapters, we do not include watcher code in the main library. Любая поддержка новой системы обмена сообщениями должна осуществляться в качестве наблюдателя. A complete list of Casbin watchers is provided below. We welcome any third-party contributions for a new watcher, please inform us and we will add it to this list:)

НаблюдательТипАвторОписание
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExМагазин KVCasbinWatcherEx for Redis
Наблюдатель RedisМагазин KV@billcobblerНаблюдатель для Redis
Наблюдатель EtcdМагазин KVCasbinНаблюдатель для и т.д.
Наблюдатель TiKVМагазин KVCasbinНаблюдатель от TiKV
Кафка НаблюдательСистема сообщений@wgarunapНаблюдатель от Apache Kafka
Наблюдатель NATSСистема сообщенийСолютоНаблюдатель для NATS
Наблюдатель ZooKeeperСистема сообщенийGrepsrНаблюдатель от Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryСистема сообщений@rusenaskНаблюдатель основан на Go Cloud Dev Kit , который работает с облачными провайдерами и самоуправляющейся инфраструктурой
Наблюдатель RocketMQСистема сообщений@fmyxyzНаблюдатель от Apache RocketMQ

Наблюдатель Экс

Чтобы поддерживать инкрементальную синхронизацию между несколькими экземплярами, мы предоставляем интерфейс WatcherEx. Мы надеемся, что он может уведомить другие случаи изменения политики, но в настоящее время реализация WatcherEx не осуществляется. Мы рекомендуем использовать диспетчер для достижения этой цели.

По сравнению с интерфейсом Watcher , WatcherEx может определить, какой тип действия по обновлению получен, e. ., AddPolicy и RemovePolicy.

Наблюдатель Апс:

APIОписание
SetUpdateCallback(func(string)) errorSetUpdateCallback sets the callback function that the watcher will call, when the policy in DB has been changed by other instances. Классический обратный вызов Enforcer.LoadPolicy().
Update() errorUpdate calls the update callback of other instances to synchronize their policy. Обычно это вызывается после изменения политики в БД, например Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy() и т.д.
Close()Close stops and releases the watcher, the callback function will not be called any more.
UpdateForAddPolicy(sec, ptype string, params ...string) errorUpdateForAddPolicy calls the update callback of other instances to synchronize their policy. Он вызывается после добавления политики через Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() и Enforcer.AddNamedGroupingPolicy().
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUPdateForRemovePolicy calls the update callback of other instances to synchronize their policy. Он вызывается после удаления политики Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() и Enforcer.RemoveNamedGroupingPolicy().
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy calls the update callback of other instances to synchronize their policy. Он вызывается после Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() и Enforcer.RemoveFilteredNamedGroupingPolicy().
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy calls the update callback of other instances to synchronize their policy. Вызывается после Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies calls the update callback of other instances to synchronize their policy. Он вызывается после Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() и Enforcer.AddNamedGroupingPolicies().
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies calls the update callback of other instances to synchronize their policy. Он вызывается после Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() и Enforcer.RemoveNamedGroupingPolicies().