Raycom框架对数据权限的支持是独立的管理体系,采用岗位关联数据资源的机制,管理要素为数据资源,数据权限,数据权限分配。
实际使用分为两个层次,分别是数据资源以及岗位维护,以及程序代码调用。
1:数据资源、岗位维护
a)数据资源维护
在数据资源管理页面,首先维护维护数据资源名称,主要是:
资源编码、资源名称、资源类型、管控策略
*其中资源编码是程序调用的基础,做唯一性判定(非唯一性可以填写,但需要提示冲突)
维护资源明细,以name和value两个维护维护资源明细。
b)分岗位维护其关联的数据资源
2:程序调用
程序调用有2个位置,jsp页面的下拉框以及后台sql。分述如下:
a)jsp部分
a-1:下拉框使用平台的select标签,其中使用dataRoleKey标签引用资源编码。示例:
<rt:select2 id="userType" dataQuery="yes" headerKey="-1" className=" w140 radius size-S"
headerValue="全部" dataRoleKey="userRoleType"></rt:select2>
*注意如果使用数据资源权限时,不要使用comcode标签。dataRoleKey与comcode存在冲突
a-2: 如果不使用dataRoleKey标签,也可以通过后台传入,则相关代码如下:
后台:
model.addAttribute("userRoleType", UserUtils.getResource("userRoleType"));
页面:
<rt:select2 id="roleId" dataQuery="yes" headerKey="-1" className="w140 radius size-S"
headerValue="全部" items="${userRoleType}" itemValue="value" itemLabel="name"></rt:select2>
b)java后台添加针对数据资源的控制
controller中
UserUtils.setResourceCodeAuthority(page.param, "userRoleType");
setResourceCodeAuthority说明:
1:第一个参数是存放sql查询的rdata
2:第二个参数是数据资源的资源编码,如果关联多个资源,依次写入即可,例如
UserUtils.setResourceCodeAuthority(page.param, "userRoleType", "userRoleType1", "userRoleType2");
xml中
AND cu.user_type in (#{param.userRoleType})
说明:直接按照常规使用,对相关的字段直接使用in方式加调用,其中里面引用的字段直接使用资源编码,如果不是分页查询,则直接使用
AND cu.user_type in (#{userRoleType})
最后于 2019-1-10
被lake编辑
,原因: