abac_model.confABAC
调用 github.com/@R_301_5506@/@R_301_5506@
[request_deFinition]r = sub,obj,act[policy_deFinition]p = sub,act[policy_effect]e = some(where (p.eft == allow))[matchers]m = r.sub.App == r.obj.App && r.sub.Type == r.obj.Type && r.sub.Method == r.obj.Methodmain.go
package mainimport ( "fmt" "github.com/@R_301_5506@/@R_301_5506@")type User struct { ID int Username string Group []Group}type Group struct { ID int name string App string // app Type string // 类型 Method string // 方法 Priority int // 优先级}type Obj struct { App string // app Type string // 类型 Method string // 方法}func main() { e := @R_301_5506@.NewEnforcer("E:\go-test\test\abac\abac_model.conf") group1 := Group{ name: "group1",App: "asset",Type: "aliyun",Method: "Get",Priority: 100,} group2 := Group{ name: "group2",} // 用户 hequan 属于 group1,group2 user1 := User{ Username: "hequan",Group: []Group{group1,group2},} obj := Obj{ App: "asset",Type: "aliyun",Method: "Get",} var perms = false // 检查 用户 hequan 所有的组 是否有权限 for _,v := range user1.Group { if e.Enforce(v,""){ perms = true break } } if perms { fmt.Println("权限正常") } else { fmt.Println("没有权限") }}结果
权限正常总结
以上是内存溢出为你收集整理的go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin)全部内容,希望文章能够帮你解决go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)