润乾报表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时
实际应用环境中,不同角色、部门的人对数据具有不同的访问权限,一种笨方法为根据不同的角色或部门设置对应的报表模板,按照登录对象访问指定的模板即可。但,对于角色、部门比较多的情况,需要制作很多张样式相同且仅仅是数据集不同的报表,这样做非常不利于后期的维护(涉及该样式时,所有报表都得改一次,)并且加大了报表制作的工作量。
分析及方案
针对这种数据权限问题(一张报表,不同人看到不同数据的),在润乾报表工具中,可以利用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时
相关文章推荐
- 报表系统FineReport通过权限控制数据访问方案
- FineReport报表软件通过权限控制数据访问方案
- 如何控制SSRS报表中数据的访问权限
- 通过 Zuul 代理控制报表访问权限
- yii 通过交易码, 控制页面访问权限
- 数据系列:通过Windows Azure SQL数据库防火墙规则控制数据库访问
- 在XP中通过NTFS控制文件夹访问权限(zz)
- 【Android核心基础02】 - 界面布局、测试、数据存储访问、权限控制、XML
- 通过虚函数表调用虚函数与通过虚函数表(绕过访问权限控制)
- redhat6.2通过allow deny实现ssh访问权限控制
- 润乾报表V5-Api设置内建数据集
- 通过JDK动态代理和自定义注解来控制方法级别的权限访问
- Jeeplus框架SSM+shiro权限控制中实现跳过登录验证访问接口数据
- 润乾报表V5饼图显示百分比数据
- ranger控制数据访问权限
- 走火入魔.NET权限组件-字段访问权限(数据表字段的访问权限)思想来解决数据列的权限控制需求
- v5中使用动态宏和会话变量对数据权限进行控制
- 走火入魔.NET权限组件-字段访问权限(数据表字段的访问权限)思想来解决数据列的权限控制需求
- 走火入魔.NET权限组件-字段访问权限(数据表字段的访问权限)思想来解决数据列的权限控制需求
- 权限系统--通过shiro进行按钮及页面访问url的权限控制