数据权限过滤器
数据权限过滤器
主要处理不同用户展示不同的业务数据,对接口进行统一的拦截处理。
操作流程:
- 创建好数据权限模型,配置好哪些地址需要进行数据权限验证,配置好需要验证的字段
- 用户登录后,把每个模型对应的数据权限,保存到session中
- 拦截器会自动验证对应的配置信息,如果满足条件,就进行验证处理。
特别注意:实际操作数据库中,还需要对数据库sql加上数据权限的条件,拦截器只能做严重处理,如果数据库sql不做处理,也可以绕过数据权限。
数据权限接口开发
需要继承com.wueasy.cloud.gateway.service.AuthorizeDataService
接口,并实现里面的getAuthDataModelMap
方法。
接口会实时调用,需要做缓存处理
/**
* 数据权限实现类
* @author: fallsea
* @version 1.0
*/
@Service
public class AuthorizeDataServiceImpl implements AuthorizeDataService {
@Override
public List<AuthorizeDataModel> getModelList() {
//返回数据权限模型
return null;
}
}
数据权限模型说明
要使用数据权限验证,必须先建好权限模型AuthorizeDataModel
,如果有多个权限模型,就需要配置多个。
modelId
:模型Id,唯一authorityUrlList
:需要验证的权限url地址(和authorityFuncList
必须有一项有值,不然无效)authorityNotFieldUrlList
:不验证字段的权限url地址field
:验证的字段,只能配置一个字段,前端接口必须传入此字段值,不然会提升无权限
private Long modelId;
/**
* 模型编号
*/
private String modelNo;
/**
* 模型名称
*/
private String modelName;
/**
* 需要验证的权限url
*/
private Set<String> authorityUrlList;
/**
* 不验证字段的权限url
*/
private Set<String> authorityNotFieldUrlList;
/**
* 验证的字段
*/
private String field;
登录处理
用户登录成功后,需要把当前用户有权限操作的数据权限,保存到com.wueasy.base.session.session
中。
/**
* 数据权限集合,key 模型id,set 对应的数据权限id
*/
private Map<Long,Set<String>> authRoleDataMap;
拦截器配置
enabled
:是否启用拦截器,默认不启用false
wueasy:
gateway:
interceptor:
authorize-data: #数据权限启用状态
enabled: true