权限之casbin模型 | 青训营笔记

295 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

由于大作业框架使用了gin-admin,因此我就在想能不能在写大作业时也稍微用上一些casbin对权限进行一些划分,虽然最后没有用上(因为我发现apk没要求实现那么多东西),但还是简单学了一些模型:

PERM元模型

P:策略

E:影响

R:请求

M:匹配规则

流程:

我定义一个策略,定义一个匹配规则,获取通过这个请求过来的参数与策略,通过规则进行匹配,获得一个eft影响,拿到影响结果进入影响的表达式返回一个布尔值

image.png

image.png

image.png

角色域 用来存储用户是哪个角色、

g = , 用户是那个角色 g=用户,角色

g = , ,_ 用户是那个角色属于那个域(商户)

image.png

在添加角色域后

请求发送来时,第一个数据可以不在为规定数据

可以在通过[matchers]匹配时结果g模式匹配,通过给定协议可以将alice替换为data2_admin。然后在进行规则匹配协议产出eft送入[policy_effect]得到结果

请求进来在g这里先经过g的下标找到alice 可同与 data2_admin(这个角色的权限)

RBAC(单商户模型)

image.png RBAC(多商户模型)

image.png

将alice与domin2经过g过滤,通过角色与用户,去拿到所对应角色域

然后通过alice与匹配的到的admin去匹配eft

image.png

权限控制采用 RBAC思想,简单地说,一个用户拥有若干角色,每一个角色拥有若干个菜单,菜单中存在菜单权限与按钮权限, 这样,就构造成“用户-角色-菜单” 的授权模型。在这种模型中,用户与角色、角色与菜单之间构成了多对多的关系。