Lewati ke konten utama

Watchers

Kami mendukung penggunaan sistem perpesanan terdistribusi seperti etcd untuk mempertahankan konsistensi antara beberapa instance enforcer Casbin. Hal ini memungkinkan pengguna kami untuk secara bersamaan menggunakan beberapa enforcer Casbin untuk menangani sejumlah besar permintaan pemeriksaan izin.

Mirip dengan adaptor penyimpanan kebijakan, kami tidak menyertakan kode pengamat dalam pustaka utama. Setiap dukungan untuk sistem pesan baru harus diimplementasikan sebagai pengamat. Daftar lengkap pengamat Casbin diberikan di bawah ini. Kami menyambut kontribusi pihak ketiga untuk pengamat baru, harap beri tahu kami dan kami akan menambahkannya ke dalam daftar ini:

WatcherTypeAuthorDescription
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExKV storeCasbinWatcherEx for Redis
Redis WatcherKV store@billcobblerWatcher for Redis
Etcd WatcherKV storeCasbinWatcher for etcd
TiKV WatcherKV storeCasbinWatcher for TiKV
Kafka WatcherMessaging system@wgarunapWatcher for Apache Kafka
NATS WatcherMessaging systemSolutoWatcher for NATS
ZooKeeper WatcherMessaging systemGrepsrWatcher for Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@rusenaskWatcher 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, InMemoryMessaging System@bartventerWatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
RocketMQ WatcherMessaging system@fmyxyzWatcher for Apache RocketMQ

WatcherEx

Untuk mendukung sinkronisasi inkremental antara beberapa instance, kami menyediakan antarmuka WatcherEx. Kami berharap dapat memberi tahu instance lain ketika kebijakan berubah, tetapi saat ini belum ada implementasi WatcherEx. Kami menyarankan Anda menggunakan dispatcher untuk mencapai hal ini.

Dibandingkan dengan antarmuka Watcher, WatcherEx dapat membedakan jenis tindakan pembaruan yang diterima, misalnya, AddPolicy dan RemovePolicy.

API WatcherEx:

APIDeskripsi
SetUpdateCallback(func(string)) errorSetUpdateCallback menetapkan fungsi callback yang akan dipanggil oleh pengamat, ketika kebijakan di DB telah diubah oleh instance lain. Callback klasik adalah Enforcer.LoadPolicy().
Update() errorUpdate memanggil callback pembaruan dari instance lain untuk menyinkronkan kebijakan mereka. Biasanya dipanggil setelah mengubah kebijakan di DB, seperti Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), dll.
Tutup()Tutup menghentikan dan melepaskan pengamat, fungsi callback tidak akan dipanggil lagi.
UpdateForAddPolicy(sec, ptype string, params ...string) errorUpdateForAddPolicy memanggil callback pembaruan dari instance lain untuk menyinkronkan kebijakan mereka. Fungsi ini dipanggil setelah kebijakan ditambahkan melalui Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy(), dan Enforcer.AddNamedGroupingPolicy().
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUpdateForRemovePolicy memanggil callback pembaruan dari instance lain untuk menyinkronkan kebijakan mereka. Fungsi ini dipanggil setelah kebijakan dihapus oleh Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy(), dan Enforcer.RemoveNamedGroupingPolicy().
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy memanggil callback pembaruan dari instance lain untuk menyinkronkan kebijakan mereka. Fungsi ini dipanggil setelah Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy(), dan Enforcer.RemoveFilteredNamedGroupingPolicy().
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy memanggil callback pembaruan dari instance lain untuk menyinkronkan kebijakan mereka. Ini disebut setelah Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies memanggil callback pembaruan dari instance lain untuk menyinkronkan kebijakan mereka. Ini disebut setelah Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies(), dan Enforcer.AddNamedGroupingPolicies().
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies memanggil callback pembaruan dari instance lain untuk menyinkronkan kebijakan mereka. Ini disebut setelah Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies(), dan Enforcer.RemoveNamedGroupingPolicies().