Mybatis 拦截器实现数据行权限

来源:互联网 发布:淘宝店铺怎么免费装修 编辑:程序博客网 时间:2024/06/14 07:52

最近项目有一个需求:需要针对不同登录用户,同一个接口查看的数据不一样。因为项目采用了mybatis持久化框架,因此想到使用mybatis自带的拦截器实现。

1. 回顾

之前接触的数据行权限一般是在SQL中加入userid=xx之类的条件,但是这样方式有比较大的局限性,侵入性过大,对原有项目的改到也很大。

2.思考

考虑到Mybatis拦截器能够拦截SQL执行的整个过程,因为我们可以考虑SQL执行之前,对SQL进行重写,从而达到数据行权限的目的。

3.问题

真正实现的时候,遇到很多问题,这里列举几个:
1.权限数据重复加载问题
2.分页插件的使用,先计算总数,怎么在这之前拦截,需要拦截多次
3.拦截具体哪个类的哪个方法,如果存在多个拦截器,怎么配置顺序
4.SQL中的数据权限的特殊标识,在mybatis拦截后,消失了
5.加载权限信息,也会被拦截,怎么判断是否加载,再加载问题,循环重复问题
6.Spring boot与mybatis插件的结合问题
7.通用性问题:与项目的耦合度尽量小