目录
总体流程

首先保证安全性,拼接权限sql前先清空params.dataScope参数防止注入
然后判断用户类型,如果是超级管理员则不查看权限类型直接给数据,如果是普通用户则查看用户权限类型
再根据权限类型生成对应的SQL语句,修改原始语句并执行
最后返回查询结果给调用方
不同权限类型
全部权限

如果为全部类型,则不修改SQL语句,返回所有数据
自定义权限

deptAlias 是部门表的别名,使用StringUtils.append()方法进行拼接。此条件的含义是,如果某个数据行的dept_id在角色所关联的部门ID集合中,那么该数据行符合自定义权限规则。
部门权限

deptAlias 是部门表的别名,user.getDeptId()是用户的id,在部门表中获取到对应dept_id的数据。
部门及以下权限

筛选出部门ID等于当前用户所属部门ID(user.getDeptId()),部门ID在当前用户所属部门的后代部门ID集合中(通过 find_in_set() 函数实现)
仅本人权限

首先获取用户ID(user.getUserId()),然后判断是否存在用户名:通过判断 userAlias 是否不为空或不为null(StringUtils.isNotBlank(userAlias)),确定是否存在用户名。
如果存在用户名,则根据用户名来筛选出对应数据
如果不存在用户名,则不查询任何数据
本文详细描述了一个IT系统的权限管理流程,包括安全性的SQL操作处理、不同类型的权限如全部权限、自定义权限、部门权限等,以及如何根据用户类型和权限设置过滤数据库查询结果。

6759

被折叠的 条评论
为什么被折叠?



