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