【笔记】Go语言通过Casbin管理权限

前言

Go语言通过Casbin管理权限

下载依赖

1
go get github.com/casbin/casbin/v2

创建模型

model.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[request_definition]
r = sub, obj, act

[policy_definition]
p = sub, obj, act

[role_definition]
g = _, _

[policy_effect]
e = some(where (p.eft == allow))

[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act

规则

policy
1
p,用户名,接口名,请求类型

创建对象

1
enforcer, err := casbin.NewEnforcer("model.conf", "policy.csv")

新增规则

1
ok, err := enforcer.AddPolicy("用户名或组名", "接口名", "请求类型")

修改规则

1
ok, err := enforcer.UpdatePolicy([]string{"用户名或组名", "接口名", "请求类型"}, []string{"用户名或组名", "接口名", "请求类型"})

校验规则

  • 返回规则判定结果布尔值
1
ok, err := enforcer.Enforce("用户名或组名", "接口名", "请求类型")

完成

参考文献

哔哩哔哩——go圈里最会写js的奇淼