编辑 | blame | 历史 | 原始文档

纯注解配置

  • 如果是纯注解配置,那么是不通过数据库的,相当于是离线配置。
  • 我们只需要关注column、type、value这三个字段。
  • column:需要过滤的数据库字段
  • type:数据权限过滤的类型
  • value:当数据权限类型为自定义的时候,配置的sql条件语句

所在机构可见

  1. 配置DataAuth注解,因为默认字段就是create_dept,所以无需配置column
    ![](../../images/screenshot_1561376354458.png)
  2. postman调用接口获取token
    ![](../../images/screenshot_1561376373156.png)
  3. 将token传入header并调用对应接口
    ![](../../images/screenshot_1561376485460.png)
  4. 查看具体返回数据
    ![](../../images/screenshot_1561376641562.png)
  5. 查看控制台sql打印
    ![](../../images/screenshot_1561376567425.png)
  6. 核对数据库数据,发现一致
    ![](../../images/screenshot_1561376673231.png)

所在机构及子集可见

  1. 配置DataAuth注解,因为默认字段就是create_dept,所以无需配置column
    ![](../../images/screenshot_1561376760292.png)
  2. 重启工程再次调用接口,发现返回了5条
    ![](../../images/screenshot_1561376857150.png)
  3. 查看控制台sql打印
    ![](../../images/screenshot_1561376895896.png)
  4. 查看部门表对应数据,可以看到,也是正确的
    ![](../../images/screenshot_1561376952747.png)

个人可见

  1. 配置DataAuth注解,由于创建人字段为create_user,不是默认,所以需要指定
    ![](../../images/screenshot_1561377096340.png)
  2. 重启工程再次调用接口,发现返回了3条
    ![](../../images/screenshot_1561377199913.png)
  3. 查看控制台sql打印
    ![](../../images/screenshot_1561377226603.png)
  4. 可以看到,筛选字段名变为了create_user,与我们预想一致

自定义配置

  1. 配置DataAuth注解,配置自定义sql
    ![](../../images/screenshot_1561377977279.png)
  2. 在这个配置的sql里我使用里占位符${userId},没错,这么写在底层就可以直接获取到当前登录用户的deptId字段,除此之外我们还可以用更多的参数,比如${deptId}${roleId}${tenantId}${account}${userName}等等
  3. 这些参数可以参考BladeUser类,他的所有字段我们都是可以根据占位符来获得的。
    ![](../../images/screenshot_1561377844255.png)
  4. 重启工程再次调用接口,发现返回了3条
    ![](../../images/screenshot_1561379055806.png)
  5. 查看控制台sql打印
    ![](../../images/screenshot_1561379080734.png)
  6. 我们可以看到,自定义sql以及占位符都生效,达到了我们的预期~

  • 纯注解配置,如果对于灵活性要求不是特别大的话,其实可以满足绝大多数场景了
  • 下一节,我们来看下基于web全自动配置