casbin - 权限管理

casbin官网
casbin github


学习参考链接

一. PERM 模型

PERM(Policy, Effect, Request, Matchers)模型很简单, 但是反映了权限的本质 – 访问控制

权限示意图

二.casbin权限库

casbin 使用了PERM模型来表达权限, 并且提供了简单直接的 API.

1. 核心概念

model file

用来定义具体的权限模型,目前支持的模型基本覆盖了常见的所有场景:

model file 语法

casbin 是基于 PERM 的, 所有 model file 中主要就是定义 PERM 4 个部分.

1. Request definition

简单理解: 访问请求的 谁,资源,操作方法(见上图) who act what

    [request_definition]
    r = sub, obj, act

分别表示 request 中的:

2. Policy definition

简单理解: 定义权限的规则,使用权限规则由macher来定义

[policy_definition]
p = sub, obj, act
p2 = sub, act

定义的每一行称为 policy rule, 其中p,p2是policy rule的名字.

3. Policy effect

简单理解: p.eft是由macher得来的,判断allow还是deny

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

上面表示有任意一条policy rule 满足,则最终结果为allow

4. Matchers

简单理解: 相当于定义了一个匹配的方法 p.eft = request.machers(policy)

[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act

定义了request和policy匹配的方法, p.eft 是allow还是deny, 就是基于此来决定的

5. Role
[role_definition]
g = _, _
g2 = _, _
g3 = _, _, _

policy file

定义具体的策略, 权限的检查就是基于定义的model file和policy file 来完成的. 相对于 model file 定义规则, policy file 中定义的就是具体的内容.