这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
由于大作业框架使用了gin-admin,因此我就在想能不能在写大作业时也稍微用上一些casbin对权限进行一些划分,虽然最后没有用上(因为我发现apk没要求实现那么多东西),但还是简单学了一些模型:
PERM元模型
P:策略
E:影响
R:请求
M:匹配规则
流程:
我定义一个策略,定义一个匹配规则,获取通过这个请求过来的参数与策略,通过规则进行匹配,获得一个eft影响,拿到影响结果进入影响的表达式返回一个布尔值
、
角色域 用来存储用户是哪个角色、
g = , 用户是那个角色 g=用户,角色
g = , ,_ 用户是那个角色属于那个域(商户)
在添加角色域后
请求发送来时,第一个数据可以不在为规定数据
可以在通过[matchers]匹配时结果g模式匹配,通过给定协议可以将alice替换为data2_admin。然后在进行规则匹配协议产出eft送入[policy_effect]得到结果
请求进来在g这里先经过g的下标找到alice 可同与 data2_admin(这个角色的权限)
RBAC(单商户模型)
RBAC(多商户模型)
将alice与domin2经过g过滤,通过角色与用户,去拿到所对应角色域
然后通过alice与匹配的到的admin去匹配eft
权限控制采用 RBAC思想,简单地说,一个用户拥有若干角色,每一个角色拥有若干个菜单,菜单中存在菜单权限与按钮权限, 这样,就构造成“用户-角色-菜单” 的授权模型。在这种模型中,用户与角色、角色与菜单之间构成了多对多的关系。