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

Наблюдатели

Мы поддерживаем использование распределенных систем обмена сообщениями, таких как и т.д., для поддержания связи между несколькими информер Casbin. Таким образом, наши пользователи могут одновременно использовать несколько караулов для обработки большого количества запросов проверки разрешений.

Подобно адаптерам хранения политики, мы не ставим код наблюдателя в основную библиотеку. Любая поддержка новой системы обмена сообщениями должна осуществляться в качестве наблюдателя. Полный список наблюдателей Casbin представлен ниже. Любой вклад сторонних наблюдателей приветствуется, пожалуйста, сообщите нам и я поместим его в этот список:)

НаблюдательТипАвторОписание
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().