问答 / 2 / 1 / 创建于 1年前
权限实现设计问题:背景:我们的系统是面向B端的一个管理系统,会给不同的管理员分配不同部门的权限,包括人员、订单、等资源信息都是挂到部门上来进行管理的。问题: 在业务的开发中为了保证本越权,要对操作的资源进行权限校验。比如:查询人员的时候,需要看这个人是不是属于此管理员能够管理的部门、有的资源可能是属于一个部门的集合,希望能有什么方式把这个校验提出来,尽量不侵入业务代码。
一个比较全面的中间件设计思路,此中间件可以实现复杂场景下的权限校验。
部门: a b c权限: user_query user_create根据部门和权限 生成部门权限。
a
b
c
user_query
user_create
部门权限有: a_user_query a_user_create b_user_query ……
a_user_query
a_user_create
b_user_query
缺点: 维护权限麻烦,新增丶修改丶删除都维护部门权限。
然后用 rbac,当然不用也行。
rbac
角色:ab部门查询管理员b部门删除管理员
ab部门查询管理员
b部门删除管理员
xx用户角色:ab部门查询管理员 b部门删除管理员
此时xx用户可知他权限集合为: a_user_query b_user_query b_user_delete
b_user_delete
我要举报该,理由是:
可以将权限变成乘积形式
部门:
a
b
c
权限:
user_query
user_create
根据部门和权限 生成部门权限。
部门权限有:
a_user_query
a_user_create
b_user_query
……缺点: 维护权限麻烦,新增丶修改丶删除都维护部门权限。
然后用
rbac
,当然不用也行。角色:
ab部门查询管理员
b部门删除管理员
xx用户角色:
ab部门查询管理员
b部门删除管理员
此时xx用户可知他权限集合为:
a_user_query
b_user_query
b_user_delete