# 数据权限用法篇 [TOC] ## 权限介绍 > 数据权限,是通过数据权限控制行数据展示,让不同的人看不同的数据; > 比如: 销售人员只能看自己的数据;销售经理可以看所有下级销售人员的数据;财务只看金额大于5000的数据等等; ## 示例 > 以用户管理列表为例, 实现只查询用户账号带1的用户 > 数据权限用法分两种, A方式(通过请求URL)和 B方式(通过自定前端组件名),推荐用B方式 ## 方式A骤(通过请求URL) ### A-1.添加注解 在后台请求方法上加注解 ```@PermissionData``` (如下图) 设计目的:为了提高系统运行效率,这样就可以指定请求走权限过滤的逻辑,而非一棍子打死,让所有请求都去筛选一下权限 ![输入图片说明](https://static.oschina.net/uploads/img/201904/12105637_AHvS.png "在这里输入图片标题") ### A-2.新增二级数据权限菜单 进入【系统管理】-->【菜单管理】界面 新增一个权限菜单(如下图) ![输入图片说明](https://static.oschina.net/uploads/img/201904/12110437_Eu7N.png "在这里输入图片标题") ### A-3.配置数据权限规则 找到步骤2新增的菜单,点击操作列更多中的数据规则,配置,_只查询用户账号带1的用户_(如下图) ![输入图片说明](https://static.oschina.net/uploads/img/201904/12111148_Atxy.png "在这里输入图片标题") ### A-4.角色授权 进入【系统管理】-->【角色管理】界面找到当前用户对应的角色,点击 更多->授权 操作,右侧弹出框中找到步骤2菜单,点击后勾选权限规则,保存(如下图) ![输入图片说明](https://static.oschina.net/uploads/img/201904/12112938_3kpp.png "在这里输入图片标题") ### A-5.测试 退出重新登录系统,访问用户管理界面发现数据被过滤了,即权限生效! ***** ## 方式B骤(通过前端组件名)——官方推荐 > 方式A的问题在于, 针对每个请求都需要配置一个权限菜单,这样其实也很费劲,同时对于菜单管理也不是很好 > 鉴于此可以考虑使用方式B,方式B基于注解属性pageComponent,步骤如下: ### B-1.添加注解 (如A-1,不同的是注解上增加了一个属性)```@PermissionData(pageComponent="system/UserList")``` 不同的是设置参数pageComponent值和 B-2中菜单的前端组件值保持一致 ### B-2.给页面菜单配置权限 找到需要配置权限的页面菜单,这里是用户管理菜单,直接在该菜单上配置数据规则(如A-3) ![输入图片说明](https://static.oschina.net/uploads/img/201904/12115326_syKM.png "在这里输入图片标题") 数据权限配置 ![输入图片说明](https://static.oschina.net/uploads/img/201904/12111148_Atxy.png "在这里输入图片标题") ### B-3.角色授权(如A-4) ### B-4.测试权限 退出重新登录,访问用户管理界面发现数据被过滤了,即权限生效! ``` 规则字段配置说明(非常重要): ①条件规则:大于/大于等于/小于/小于等于/等于/包含/模糊/不等于/自定义SQL ②规则值:指定值 ( 固定值/系统上下文变量 ) ``` ***** ## 数据权限规则 ### 1.系统上下文变量 注意:数据权限配置,规则值可以填写系统上下文变量(当前登录人信息),从而根据当前登录人信息进行权限控制。 | 编码| 描述 | | -------- | ----- | | sys_user_code| 当前登录用户登录账号| | sys_user_name| 当前登录用户真实名称| | sys_date| 当前系统日期| | sys_time| 当前系统时间| | sys_org_code| 当前登录用户部门编号| 规则值,配置写法如下:#{sys_user_code} ### 2.建表规范(系统标准字段) 如果需要通过当前登录人,进行数据权限控制,则业务表必须有以下系统标准字段;数据添加和编辑,jeecg会通过拦截器自动注入操作人的信息。 比如:创建人,创建时间,创建人所属部门、创建人所属公司,有了这些标准字段,就可以通过当前登录人进行数据隔离控制; | 字段英文名| 字段中文名| | -------- | ----- | ---- | | CREATE_BY| 系统用户登录账号| | CREATE_NAME| 系统用户真实名字| | SYS_ORG_CODE| 登录用户所属部门| ### 3.组织机构邮编规则 JEECG组织机构支持无限层级,上下级关系通过组织机构编码实现,组织机构编码规则类似邮编方式,看下图; 邮编规则优势: 邮编规则,上下级编码固定规律,便于定位下级和上级; ![输入图片说明](https://static.oschina.net/uploads/img/201804/16113903_qZFJ.png "在这里输入图片标题")