Mybatis拦截器设计的基本操作方案——功能权限

Mybatis拦截器设计的基本操作方案——功能权限

设计思路:

【数据权限】是在【功能权限】基础上的进一步扩展。 例如,你可以查看属于【功能权限】范围内的订单,但可以查看哪些订单是【数据权限】的工作。

根据不同的角色定义一些规则并保存规则值。 最后将该值转换为执行脚本中的值。

Mybatis拦截器的作用之一就是拦截某些方法的调用。 你可以选择在这些被拦截的方法执行前后添加一定的逻辑,也可以在执行这些被拦截的方法时执行自己的逻辑游戏动态,而不是执行被拦截的方法。 拦截方法。

角色权限设计方案_角色权限设计5张表_角色权限设计

Mybatis拦截器设计的初衷之一就是让用户在某些时候可以实现自己的逻辑,而不必接触Mybatis的固有逻辑。

在这个方案中3D场景,可以根据当前用户的数据范围动态组装sql,作为所有查询sql的附加逻辑。

角色权限设计5张表_角色权限设计方案_角色权限设计

完成:

1.首先寻找机会拦截

角色权限设计5张表_角色权限设计方案_角色权限设计

2、根据拦截器的注解声明,拦截的是Executor对象的query方法。

3、根据mabatis源码,提取mappedStatement中的SQL语句

角色权限设计方案_角色权限设计5张表_角色权限设计

4、取出sql语句,根据当前用户获取规则角色权限设计,并将条件追加到sql中

5.将增强后的sql放回到mappedStatement中

角色权限设计5张表_角色权限设计_角色权限设计方案

拦截器角色权限设计,添加一些权限处理,最后追加到SQL中

获取当前登录信息

这里使用两种方法来获取登录信息:

一种方法是使用 threadlocal 从同一线程传递变量。

另一种方法是直接在dao层传递参数。 我比较懒,没有在线程之前实现变量传递。 当时的情况是,用户提交了一个查询请求,导出后直接提交给另外一个线程springbatch来处理,所以登录者的信息就直接传给了dao参数

文章来源:https://www.ucloud.cn/yun/68464.html