Mybatis 拦截器实现数据行权限

7 篇文章 0 订阅
5 篇文章 0 订阅

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

1. 回顾

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

2.思考

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

3.问题

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值