怎么把权限管理细分到数据上

目前我使用的权限管理是普通的角色,菜单,用户模式,也就是说最低能把权限限制到菜单节点上。
现在有这样的需求:
四种角色 :超管--区域经理--门店经理--员工
这几个角色都可以管理会员。但是管理的方式不一样。
1:查看会员。 四种角色都可以,但是查看范围不一样,超管可以查看所有,区域经理可以查看旗下的门店经理添加的会员和门店经理下面员工添加的会员的综合。门店经理能查看自己添加的会员和旗下员工添加的会员总和。员工只能查看自己添加的会员。
像上面这种权限设计都哪些好方法?

阅读 5k
2 个回答

像这种具有层级关系的,重点在于建立父级与子级上的关联,每个子级的code都是在父级code的基础上扩展。
用户表users中,可以建成这样:

id     user                           code
1      超管                           00001
2    A区域经理                        0000100001
3    B区域经理                       0000100002
4    A区域下的A1门店经理             000010000100001
5    A区域下的A2门店经理             000010000100002
6    A区域下的A1门店经理下的A11员工  00001000010000100001
7    A区域下的A1门店经理下的A12员工  00001000010000100002
...

而会员表vip则是

id        c_uid(创建人)
1            4
2            7
3            5
4            6
5            6

当A区域下的A1门店经理(id=4,code=000010000100001)登录时,要获取旗下的会员就可以这样写:

select * 
  from users t1 
    left join vip t2 on t1.id=t2.c_uid 
  where t1.code like concat('000010000100001','%');

如果这需求没有那么容易变动(查看范围变动),我建议是写在代码上。数据访问层上对接受的不同角色返回不同的数据集与检验权限判断。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题