数据权限拦截器

数据权限拦截器主要处理不同用户展示不同的业务数据,对接口进行统一的拦截处理。

操作流程:

  • 创建好数据权限模型,配置好哪些地址需要进行数据权限验证,配置好需要验证的字段
  • 用户登录后,把每个模型对应的数据权限,保存到session中
  • 拦截器会自动验证对应的配置信息,如果满足条件,就进行验证处理。

特别注意:实际操作数据库中,还需要对数据库sql加上数据权限的条件,拦截器只能做严重处理,如果数据库sql不做处理,也可以绕过数据权限。

数据权限接口开发

需要继承com.wueasy.gateway.security.service.AuthorizeDataService接口,并实现里面的getModelList方法。

接口会实时调用,需要做缓存处理

/**
 * 数据权限实现类
 * @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

接口获取数据权限数据

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>
Copyright © wueasy.com 2017-2022 all right reserved,powered by Gitbook未经允许,禁止以任何形式传播 修订时间: 2021-12-01

results matching ""

    No results matching ""