基于角色显示不同数据范围技术方案
业务背景
旅行社管理员可以管理:
- 自己创建的路线
- 用户基于创建人所创建的路线基础上,所生成的定制路线
需求分析
- 超级管理员:查看所有数据
- 旅行社管理员:查看自己数据+所有普通用户创建的数据
- 普通用户:查看自己创建的数据
方案设计
前提:每个数据表都存着 创建人I
注解加拦截器,注解加在相关方法中,执行sql前,根据角色分别执行不同逻辑:
- 超级管理员:不增加创建人ID过滤条件
- 旅行社管理员:增加创建人ID过滤条件(当前用户ID+所有普通用户)
- 普通用户:增加创建人ID过滤条件(当前用户ID)
方案分析
优点:
- 可复用。后续如果有相同逻辑,加注解即可实现。
缺点:
- 用户绑定多个角色时,处理逻辑存在互相冲突可能性。
可能变动的点
1. 旅行社管理员可查看的数据范围改为:同组织(或以下用户)的用户创建的数据+普通用户数据。
调整逻辑:数据过滤条件改为根据 当前用户所在组织及以下用户ID +普通用户ID过滤。
评论