TiKV Watcher is the TiKV watcher for Casbin. With this library, Casbin can synchronize the policy with the TiKV database in multiple enforcer instances.
Note: Considering that TiKV doesn't have watch mechanism like etcd or channel like Redis, this ugly implementation uses polling to achieve monitoring a certain key, which may cause some performance trouble
go get github.com/casbin/tikv-watcher
start the TiKV service before run this example:
package main
import (
"fmt"
"time"
watcher "github.com/casbin/tikv-watcher"
casbin "github.com/casbin/casbin/v2"
)
func main() {
e, _ := casbin.NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")
w, err := watcher.NewWatcher(
"testkey",
100*time.Millisecond,
"127.0.0.1:2379",
)
if err != nil {
panic(err)
return
}
e.SetWatcher(w)
w.SetUpdateCallback(
func(s string) {
fmt.Println("===================get" + s)
},
)
e.SavePolicy()
time.Sleep(10 * time.Second)
}
This project is under Apache 2.0 License. See the LICENSE file for the full license text.