Casbin学习笔记:基础模型
概述
Casbin是一个强大的、高效的开源访问控制框架,其权限管理机制支持多种访问控制模型。
工作原理
在 Casbin 中, 访问控制模型被抽象为基于 PERM (Policy, Effect, Request, Matcher) 的一个文件。 因此,切换或升级项目的授权机制与修改配置一样简单。 您可以通过组合可用的模型来定制您自己的访问控制模型。 例如,可以在一个model中获得RBAC角色和ABAC属性,并共享一组policy规则。
Policy 策略
p={sub, obj, act, eft},策略一般存到数据,因为项目会很多
定义:
1 | [policy_definition] |
Matchers 匹配规则
Request和Policy的匹配规则
比如(r请求 p策略):m= r.sub == p.sub && r.act == p.act && r.obj == p.obj
这时候会把r和p按照上述描述进行匹配,从而返回匹配结果(eft)。如果不定义会返回allow,如果定义过就返回定义过的结果
Effact 影响
决定是否放行
比如:e = some(where(p.eft == allow))
这种情况下,我们的一个matcher匹配完成,得到allow那么这条请求将被放行
或者: e = some(where(p.eft == allow)) && !some(where(p.eft == deny))
这里的规则是定死的
Request 请求
r = {sub, obj, act}