您的位置:首页 > 其它

润乾报表v5通过权限控制数据访问方案

2017-09-27 11:31 260 查看
需求说明

实际应用环境中,不同角色、部门的人对数据具有不同的访问权限,一种笨方法为根据不同的角色或部门设置对应的报表模板,按照登录对象访问指定的模板即可。但,对于角色、部门比较多的情况,需要制作很多张样式相同且仅仅是数据集不同的报表,这样做非常不利于后期的维护(涉及该样式时,所有报表都得改一次,)并且加大了报表制作的工作量。

分析及方案

针对这种数据权限问题(一张报表,不同人看到不同数据的),在润乾报表工具中,可以利用SQL参数(动态过滤)或宏动态拼sql来实现数据权限控制,该方法只需要制作一张报表模板。

下面是具体该方案的实施过程:

第一步:数据准备

这里采用mysql数据库,创建数据表 m_datas ,脚本如下:

CREATE
TABLE
m_datas (
    id INT
NOT NULL
,
    `data` varchar(100)
NULL,
    `role` varchar(100)
NULL
)

表数据



ID:编号

DATA:数据

ROLE:可查看角色编码

创建角色表 m_roles
,脚本如下:

CREATE
TABLE
m_roles (
    id INT
NOT NULL
,
    rolename varchar(100)
NULL,
    `role` varchar(100)
NULL
)

表数据



ID:编号

ROLENAME:角色名称

ROLE:角色编码

第二步:制作报表模板(我们这里用宏动态拼sql实现数据权限,简单示例)

4000
新建一张报表模板

(1)报表数据集中新建一个“sql类型”数据集,名称为:m_datas,SQL语句写成“SELECTm_datas.id,m_datas.data,m_datas.role,m_roles.rolename
FROM m_datas,m_rolesWHERE  m_datas.role = m_roles.role ${pri}”

根据数据集m_datas设计如下报表:



(2)报表--参数,增加“role”参数,参数类型为“普通参数”



(3)报表--参数,增加“pri”参数,参数类型为“动态参数”



值表达式为:" and m_datas.role>="+role

注:通过role的编号我们可以看出,角色越高看到的数据越多。

保存模板文件即可。

第三步:发布到服务器,并访问报表查看结果数据

此示例报表发布至报表设计器自带demo应用下,可通过如下url访问:

http://127.0.0.1:6868/demo/reportJsp/showReport.jsp?rpx=datas_pri.rpx&role=0

其中,role为报表接收的角色id值,在集成应用时,可从session获取后传入。

测试效果:

role为0时



切换role为3时

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: