数据权限拦截器
数据权限拦截器
主要处理不同用户展示不同的业务数据,对接口进行统一的拦截处理。
操作流程:
- 创建好数据权限模型,配置好哪些地址需要进行数据权限验证,配置好需要验证的字段
- 用户登录后,把每个模型对应的数据权限,保存到session中
- 拦截器会自动验证对应的配置信息,如果满足条件,就进行验证处理。
特别注意:实际操作数据库中,还需要对数据库sql加上数据权限的条件,拦截器只能做严重处理,如果数据库sql不做处理,也可以绕过数据权限。
数据权限接口开发
需要继承com.wueasy.gateway.security.service.AuthDataService
接口,并实现里面的getAuthDataModelMap
方法。
/**
* 数据权限实现类
* @author: fallsea
* @version 1.0
*/
@Service
public class AuthDataServiceImpl implements AuthDataService {
@Override
public List<AuthDataModel> getAuthDataModelMap() {
//返回数据权限模型
return null;
}
}
数据权限模型说明
要使用数据权限验证,必须先建好权限模型AuthDataModel
,如果有多个权限模型,就需要配置多个。
modelId
:模型Id,唯一authorityUrlList
:需要验证的权限url地址(和authorityFuncList
必须有一项有值,不然无效),多个逗号分隔authorityFuncList
:需要验证的权限功能号(和authorityUrlList
必须有一项有值,不然无效),多个逗号分隔authorityNotFieldUrlList
:不验证字段的权限url地址,多个逗号分隔authorityNotFieldFuncList
:不验证字段的权限功能号,多个逗号分隔field
:验证的字段,只能配置一个字段,前端接口必须传入此字段值,不然会提升无权限
private Long modelId;
/**
* 模型编号
*/
private String modelNo;
/**
* 模型名称
*/
private String modelName;
/**
* 需要验证的权限url
*/
private Set<String> authorityUrlList;
/**
* 需要验证的权限功能号
*/
private Set<String> authorityFuncList;
/**
* 不验证字段的权限url
*/
private Set<String> authorityNotFieldUrlList;
/**
* 不验证字段的权限功能号
*/
private Set<String> authorityNotFieldFuncList;
/**
* 验证的字段
*/
private String field;
登录处理
用户登录成功后,需要把当前用户有权限操作的数据权限,保存到com.wueasy.base.session.session
中。
/**
* 数据权限集合,key 模型id,set 对应的数据权限id
*/
private Map<Long,Set<String>> authRoleDataMap;
拦截器配置
enabled
:是否启用拦截器,默认不启用false
wueasy:
gateway:
interceptor:
dataAuthority: #数据权限启用状态
enabled: true
接口获取数据权限数据
function接口中,可以使用系统变量$authData()
获取有权限的数据权限id字符串,多个逗号分隔。
<function id="S1124" type="s">
<params>
<param id="isSystem" name="是否管理员" value="$isSystem()"/>
<param id="authDataStr" name="数据权限" value="$authData()"/>
</params>
<resource>SysCatalogService.queryUserCatalogList</resource>
<description>查询文章栏目列表</description>
</function>