go web 权限管理 解决方案 (面向对象权限 ABACCasbin)

go web 权限管理 解决方案 (面向对象权限 ABACCasbin),第1张

概述go web 权限管理 解决方案 (面向对象权限 ABAC / Casbin) 说明 ABAC 调用 github.com/casbin/casbin abac_model.conf [request_definition]r = sub, obj, act[policy_definition]p = sub, obj,act[policy_effect]e = some(where go web 权限管理 解决方案 (面向对象权限 ABAC / @R_301_5506@) 说明

ABAC
调用 github.com/@R_301_5506@/@R_301_5506@

abac_model.conf
[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.Method
main.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)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存