因为自己一直在尝试做一个自己的管理系统——枫叶系统。不可避免的要遇到权限管理上的问题,寻找了好久,发现casbin这个拓展确实牛逼(spatie 这个也很牛),所以准备好好学习下。
这个东西确实很强大,但是也比较难懂,难学,所以就逐步记录自己的学习过程,方便自己随时温故而知新吧
casbin——简单来说就是一个权限系统,它会回答谁(Subject)能对什么(Object)做什么(Action).我们用到了其中RBAC功能, 支持角色, 资源的多继承.
配置解析
我们写的, casbin配置文件如下(model.conf):
[request_definition]
r = sub, obj, act
[policy_definition]
p = sub, obj, act
[role_definition]
g = _, _
g2 = _, _
[policy_effect]
e = some(where (p.eft == allow))
[matchers]
m = g(r.sub, p.sub) && g2(r.obj, p.obj) && r.act == p.act
如果你没用过casbin, 或者是刚开始用, 上面的文件可能看起来不明白, 那我们来解析一下:
request_definition
[request_defini