列表数据权限用法 **目录索引:** - 功能说明 - 数据权限两种编码模式 - 数据权限规则篇 1. 当前用户上下文变量 2. 建表规范(系统标准字段) 3. 组织机构邮编规则 - 案例一(行级别 – 限制demo用户不能看admin的数据) - 案例二(行级权限 - 登录人只能看自己数据) - 案例三(行级权限 - 登录人可看下级所有人数据) - 案例四(列级别权限 – 不同的人看到数据列表不同的列) - 采用Minidao方式权限集成 1. 权限配置规则 2. 权限生成SQL规则获取方法 ##四、案例一(行级别 – 限制demo用户不能看admin的数据) ###1.数据权限案例 通过权限控制,限制demo角色用户,无法查看用户列表中admin这条数据。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16113940_I2Ul.png "在这里输入图片标题") ###2.数据权限菜单配置 创建数据权限类型菜单(注意:列表访问链接和数据请求链接不是一个,此为加载数据请求) 注意: 这里很容易配置错误,一定注意 用户数据请求地址:userController.do?datagrid ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114018_b303.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114042_LL87.png "在这里输入图片标题") ###3.数据权限控制规则配置 **配置1、条件规则为非自定义sql表达式** ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114109_BrQO.png "在这里输入图片标题") 填写说明: ①规则名称:随意定义 ②规则字段:[字段名称] **注意: 模式一:[字段名称]对应着hibernate实体的字段 模式二:[字段名称]对应着数据库表的字段** ③条件规则:大于/大于等于/小于/小于等于/等于/包含/模糊/不等于 ④规则值:指定值 ( 固定值/系统上下文变量 ) **例如:** 规则名称:用户数据限制 规则字段:userName 条件规则:不等于 规则值:admin 以上表单权限规则表示将动态追加sql条件: userName !=‘admin’的条件,即按照用户账号!=admin进行了数据权限控制。 **配置2、条件规则为自定义sql表达式,规则值为自定义sql的条件语句** **例如:** 要想筛选年龄小于18岁且身高大于180的数据即直接配置规则值为: age < 18 and height >180 其中age和height均为数据库表字段名 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114209_k5eB.png "在这里输入图片标题") ###4.数据权限授权角色 ①菜单访问授权 用户管理菜单; ②数据权限授权 用户列表数据数据菜单,数据规则权限授权; ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114243_WXRR.png "在这里输入图片标题") ###5.测试数据权限效果 采用demo用户(授权demo角色)登录系统,访问用户列表, 效果如下,看不到admin用户数据,说明权限生效 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114316_SyCn.png "在这里输入图片标题") ##五、案例二(行级权限 - 登录人只能看自己数据) ###1.数据权限案例 通过登录人账号,进行数据权限过滤,限制销售人员只能看自己的业务数据。 通过admin查看“列表标签”功能如下(数据提前准备,分别采用demo、scott两个用户创建) ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114350_JKVL.png "在这里输入图片标题") ###2.数据权限规则配置 控制请求: jeecgListDemoController.do?datagrid ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114418_1Zny.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114439_9kFP.png "在这里输入图片标题") ###3.数据权限授权角色 ①菜单访问权限 列表标签菜单; ②数据权限菜单 Jeecg demo数据权限列表,数据权限规则授权; ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114506_YMrv.png "在这里输入图片标题") ###4.测试数据权限效果 采用demo用户(授权demo角色)登录系统,查看菜单【常用实例-列表标签】功能,只能看到自己的数据,说明权限生效。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114535_l2TP.png "在这里输入图片标题") ##六、案例三(行级权限 - 登录人可看下级所有人数据) ###1.数据权限案例 创建三个用户scott、lisi、demo,设置demo、scott为销售人员岗位,设置lisi为销售经理属于demo和scott上级,通过权限配置lisi可看下级和自己的业务数据; 采用admin用户,查看“列表标签”菜单,可以看所有用户数据 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114629_ihvv.png "在这里输入图片标题") ###2.数据规则配置原理 通过登录人所属部门,进行数据权限配置,查询业务数据通过{创建部门编码}字段,与{当前登录人部门编码}进行模糊匹配; 例如:当前登录人所属部门编码:A01A02 因为JEECG设计组织机构编码都是按照邮编方式组织上下级。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16114701_QhHK.png "在这里输入图片标题") 他的下级部门可以用SQL这样表示: sysOrgCode like ‘A01A02%’ ###3.基础数据准备 ①用户分配组织机构 针对demo、scott用户分配销售人员岗位,针对lisi用户分配销售经理岗位 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115030_wuCd.png "在这里输入图片标题") ②组织机构规则如下,lisi为demo、scott上级。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115041_FFO5.png "在这里输入图片标题") ③录入业务数据 使用scott、demo两个用户录入数据 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115057_gFCl.png "在这里输入图片标题") ###4.数据权限规则配置 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115129_gWcJ.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201806/14150816_7G7m.png "在这里输入图片标题") 说明:通过模糊规则,类似 like ‘{当前登录人组织机构}%’ ###5.数据权限授权角色 设置lisi用户为经理角色,对角色分配数据权限 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115207_QQGe.png "在这里输入图片标题") ###6.测试数据权限效果 通过lisi用户登录后台,查看“列表标签”功能,发现可以看到scott、demo用户录入的数据,说明数据权限生效。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115224_j82w.png "在这里输入图片标题") ##七、案例四 (列级别权限 – 不同的人看到数据列表不同的列) ###1.功能说明 列级别权限,主要针对数据列字段进行权限控制,从而实现不同角色可以有不同列字段查看权限; ###2.列级别权限案例 通过列数据权限,限制demo角色,不能查看列字段[电话] 通过admin用户查看“标签列表”功能,界面如下: ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115245_TmCW.png "在这里输入图片标题") ###3.列表页面编码规则 设置标签参数field,对应页面控制编码; ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115301_rVDo.png "在这里输入图片标题") ###4.列表行权限控件配置 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115316_hDyM.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115326_x1In.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115354_dJSo.png "在这里输入图片标题") 工资查看权限录入同之 ###5.列表行数据权限授权角色 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115409_ZuUy.png "在这里输入图片标题") ###6.测试列表行数据权限效果 采用demo用户(授权demo角色)登录系统,访问“标签列表”, 效果如下,已经看不到手机号字段,说明列表级权限控制成功。 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115420_giXK.png "在这里输入图片标题") ##八、采用Minidao方式权限集成 ###1.权限配置规则 说明:SQL方式数据权限规则一般采用Minidao实现数据操作,当然也可以是其他纯SQL方式,配置对应数据库表的字段,非实体字段 ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115440_Ias7.png "在这里输入图片标题") ###2.权限生成SQL规则获取方法 通过工具类org.jeecgframework.core.util.JeecgDataAutorUtils ![输入图片说明](https://static.oschina.net/uploads/img/201804/16115457_zwAE.png "在这里输入图片标题") 通过方法:JeecgDataAutorUtils.loadDataSearchConditonSQLString(),可以直接获取配置的权限对应的sql规则。