For Go 1.17+, use v2.4.0+ ,
For Go 1.16 and below, stay on v2.3.0.
Redis Watcher is a Redis watcher for Casbin.
go get github.com/casbin/redis-watcher/v2 package main import ( "log" "github.com/casbin/casbin/v2" rediswatcher "github.com/casbin/redis-watcher/v2" "github.com/redis/go-redis/v9" ) func updateCallback(msg string) { log.Println(msg) } func main() { // Initialize the watcher. // Use the Redis host as parameter. w, _ := rediswatcher.NewWatcher("localhost:6379", rediswatcher.WatcherOptions{ Options: redis.Options{ Network: "tcp", Password: "", }, Channel: "/casbin", // Only exists in test, generally be true IgnoreSelf: false, }) // Or initialize the watcher in redis cluster. // w, _ := rediswatcher.NewWatcherWithCluster("localhost:6379,localhost:6379,localhost:6379", rediswatcher.WatcherOptions{ // ClusterOptions: redis.ClusterOptions{ // Password: "", // }, // Channel: "/casbin", // IgnoreSelf: false, // }) // Initialize the enforcer. e, _ := casbin.NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv") // Set the watcher for the enforcer. _ = e.SetWatcher(w) // Set callback to local example _ = w.SetUpdateCallback(updateCallback) // Or use the default callback // _ = w.SetUpdateCallback(rediswatcher.DefaultUpdateCallback(e)) // Update the policy to test the effect. // You should see "[casbin rules updated]" in the log. _ = e.SavePolicy() // Only exists in test fmt.Scanln() }This project is under Apache 2.0 License. See the LICENSE file for the full license text.