笔者最近在努力的分析开源项目若依框架,今天看到了若依对数据权限进行控制的部分,自定义注解+AOP+动态SQL的注入,看的我是眼花缭乱,然后我又认真的复盘了一遍整个的实现过程,不由得感叹一句,若依YYDS~~
简单猜测
除了我们平时都知道的 路由权限(即对接口的访问权限外),在日常生产开发中,我们还应该有对数据的访问权限。
在若依这个框架中,通过角色中的数据范围这个属性来对数据权限进行控制。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8JiPrHVq-1649742911724)(D:softTyporaimageimage-20220412121559708.png)]](https://1000bd.com/contentImg/2022/08/02/195634112.png)
对应实体类:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uJq5nvTm-1649742911726)(D:softTyporaimageimage-20220412121959106.png)]](https://1000bd.com/contentImg/2022/08/02/195634577.png)
深入分析
一个用户肯定是 有一种角色的,也肯定是隶属于一个部门的。
这里咱们就以用户在查询用户时,即 selectUserList时所做的数据权限为例进行分析。
若依在进行数据权限的访问时,持久层(Mapper层)中对数据进行处理,根据用户角色的权限对数据进行过滤。