## 数据权限 Pre的数据范围控制是指,对拥有相同角色的用户,根据部门的不同进行相应的数据筛选,如果部门不相同,那么有可能展示出的具体数据是不一致的.所以说Pre对数据范围控制是以部门id为单位来标识的 #### 如何增加数据范围拦截呢? 只需在相关的mapper接口的参数中增加一个DataScope对象即可,DataScope中有两个字段,scopeName用来标识sql语句中部门id的字段名称,例如deptiid或者id,另一个字段deptIds就是具体需要过滤的部门id的集合.拦截器原理如下:拦截mapper中包含DataScope对象的方法,获取其原始sql,并做一个包装限制部门id在deptIds范围内的数据进行展示. #### 角色数据权限 系统提供了三种数据权限控制 - 全部数据权限 可以看到所有部门数据 - 本级数据权限 限制只能看到本部门数据 - 本级以及子级数据权限 限制只能看到本部门以及子部门数据 - 自定义数据权限 可根据实际需要选择部门控制数据权限 ![](https://img.kancloud.cn/6a/5b/6a5b4582bfb39aea646248864d74b018_2582x1544.png) #### 如何使用? 在dao层操作数据库接口处加上` DataScope dataScope`即可 ``` /** * 分页查询用户信息(含角色) * * @param page 分页 * @param userDTO 查询参数 * @param dataScope * @return list */ IPage<SysUser> getUserVosPage(Page page, @Param("query") UserDTO userDTO, DataScope dataScope); ``` 这样就可以进行数据权限查询