Titv-Watcher
Tikv-Watcher is the Kitv watcher for casbin, With this library, casbin Casbin can synchronize the policy with the 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
Installation:
go get github.com/ComradeProgrammer/casbin-tikv-watcher
Single Example:
start the tikv service before run this example
package main
import (
"fmt"
"time"
watcher "github.com/ComradeProgrammer/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 {
fmt.Println(err)
return
}
e.SetWatcher(w)
w.SetUpdateCallback(
func(s string) {
fmt.Println("===================get" + s)
},
)
e.SavePolicy()
time.Sleep(10 * time.Second)
}
License:
This project is under Apache 2.0 License. See the LICENSE file for the full license text.