报表系统FineReport通过权限控制数据访问方案

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

问题:实际应用环境中,不同角色的人可能对数据具有不同的访问权限,通过直接在SQL语句中筛选出需要的数据制作模板可以解决该需求,但对于角色较多的情况,就需要制作很多张样式相同只是数据集不同的报表,不利于后期的维护并且加大了报表制作的工作量。

方案:针对该问题,在报表系统FineReport中,可以利用SQL参数配合参数处理器再结合权限以完成该需求。使用该方案只需要制作一张表样,利用SQL中的参数进行动态过滤达到该目的。下面具体描述该方案的实施过程。

 

第一步:数据准备

    这里使用的是DEMO数据,主要为了演示该方案的操作,具体使用的时候需要根据具体的数据情况进行调整:

表:datas

ID

DATA

ROLE

1

100

2

200

3

300

4

400

1

5

500

1

6

600

2

7

700

2

8

800

3

 

ID:编号

DATA:数据

ROLE:可查看角色编码

 

表:roles

ID

ROLENANME

ROLE

1

总裁

2

总经理

1

3

部门经理

2

4

销售人员

3

ID:编号

ROLENAME:角色名称

ROLE:角色编码

 

第二步:制作模板

2.1 新建一张模板,报表数据集中新建一个“数据库查询数据集”,名称为:datas,SQL语句写成“select * from datas where ROLE>=[?ROLE?]

2.2 拖拽新建的报表数据集datas的数据列至报表中,如下图所示:

http://www.finereport.com/forumimages/tgqxkzsjfw1.jpg

2.3 新建一个服务器数据字典,用于进行角色名称与角色编码的转换,因为这里是演示用,就直接将数据写死了,使用自定义的服务器数据字典,用户可以根据具体的情况使用数据库查询数据字典来定义,关键点是要将“角色名”设置为key,“角色编码”设置为value。因为在应用的过程中,一个用户的角色是通过角色名来定义的,而对数据的访问控制是通过角色编码来控制的,这里需要一个值转换的过程。如果角色名与角色编码一致则可以不经过下列步骤的设置。

数据字典的名称为:roles_map

http://www.finereport.com/forumimages/tgqxkzsjfw2.jpg

2.4 设置参数处理器,选择菜单中的“报表”-“参数处理器”,定义先前SQL语句中定义的参数“ROLE”的参数处理器,这里采用公式类型,用于将角色名处理为角色编码,公式为:“MAP($ROLE,”roles_map”)”如下图所示:

http://www.finereport.com/forumimages/tgqxkzsjfw3.jpg

2.5 保存模板文件即可。

2.6 用户在集成应用的时候,需要在系统登录后设置当前登录的用户的角色,或者使用FineReport自带的权限管理系统。如果采用FineReport自带的权限管理系统,上述SQL语句中的ROLE参数可使用FR_ROLE_NAME来替代,该参数是FineReport权限系统中的默认登录角色参数名。具体登录角色设置方式请参见FineReport权限集成帮助文档或咨询FineReport服务人员。

文章转自:http://blog.vsharing.com/fanfanzheng/A1448107.html

转载于:https://my.oschina.net/u/194678/blog/35708

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SkyWalking配上告警更优秀

前言对于监控系统来说,不可能让人一直盯着监控看板,而更多的是以自动提醒的方式,比如邮件、短信或微信推送等,当达到或超出预设的告警指标时,就自动发送消息提醒,下面就来说说如何配置SkyWalking的告警。正…

神抓拍!2020搞笑野生动物摄影大赛,哈哈哈哈哈笑到头掉

全世界只有3.14 % 的人关注了爆炸吧知识图片来自CWPAs 2020小动物们到底能有多好玩让我们来看看今年的搞笑野生动物摄影大赛吧保准叫你从头笑到尾(以下是入围作品)“飚自行车的”猴看起来像个酷猴▲摄影:Yevhen Samuchenko真情实感演绎“我太…

绝不翻车珍珠奶茶做法

1 如何在家自制珍珠奶茶▼2 儿子,妈妈给你烤小饼干哦▼3 放假太久了连自己哪个班都忘了▼4 想问下,鸟是在哪都能起窝吗?▼5 不到万不得已,绝不去做▼6 这个店名太童年阴影了▼7 小鸡做错了什么?▼你点的每个赞&…

施一公:“中国式科研”误国误民!表面上一片繁荣,实则深藏危机

全世界只有3.14 % 的人关注了爆炸吧知识论文和科技实力是两回事在全国政协十三届一次会议上,中国科学院院士、清华大学原副校长施一公曾说道:“我以前曾经预测,中国会在2020年论文数超过美国,没想到我们提前完成了。”但面对这项数…

正确使用和理解C#中的闭包

定义 我们把在Lambda表达式(或匿名方法)中所引用的外部变量称为捕获变量。而捕获变量的表达式就称为闭包。捕获变量 捕获的变量会在真正调用委托时“赋值”,而不是在捕获时“赋值”,即总是使用捕获变量的最新的值。如下代码所示,调用委托时&a…

重磅公开!36个高考数学破题大招

前段时间,超模君发了关于极值点偏移问题的总结资料,朋友们都觉得内容整合得十分详细。同时,也有不少很多朋友留言说希望有其他高考数学常考问题的解题总结。确实,毕竟高考涉及的内容非常多,比如说参数范围问题、数列求…

Linux服务器数据备份

2019独角兽企业重金招聘Python工程师标准>>> 服务器上的数据是如此重要,以至于我们定期要对其进行备份!这里讲一下mysql的备份和使用rsync同步服务器上的文件,从而实现多台linux服务器之间的文件的备份。 一 Mysql备份 mysql的备份…

与毒”共舞30年!清华美女研究生为何放弃高薪,选择特招入伍?背后的原因令人泪崩......

全世界只有3.14 % 的人关注了爆炸吧知识从武汉新冠疫情爆发到如今,陈薇没有一天休息。短短半年间,54岁的她头发从黑到白,也哭了好几次。刚去武汉-现在陈薇的母亲也在电视上看到了女儿的变化:“她变老了,都有白头发了。…

Centos-启动network报错RTNETLINK answers: File exists解决方法

背景:今天在Vcenter上,用模板克隆了一个虚拟机,启动之后,网卡启动不了,报错如下:RTNETLINK answers: File exists说明: 环境 Centos6.6_X64 ; 网卡两个原因: 由于用模板…

不当败家子的原因......

1 实在是太真实!▼2 有钱就是可以为所欲为(素材来源网络,侵删)▼3 在哪都要有仪式感!▼4 送自己去孤儿院......▼5 万万没想到...(图源网络,侵删)▼6 这都能催的?▼…

我不信奉Scrum,我信奉敏捷

Scrum一直以来争论不断。虽然创始人Ken在演讲中曾说过即使是白痴也可以用Scrum,但是依然有很多人认为Scrum对团队成员的素质要求非常高。另据统计,75%以上的Scrum都可以称得上失败。 去年十月,有幸参加了Outsofting鲍央舟老师的Scrum培训。培…

仿京东商城源码java_Java+SSM实现类似京东的3C电子商城系统

需求分析基于Spring, SpringMVC, Mybatis 实现一个类似仿京东商城的3C电子商城系统, 能够实现商品管理与展示, 加入购物车, 支付购买等功能, 项目采用java技术进行开发。运行环境java, jdk1.8,tomcat8.5,mysql5.6,EclispseEE项目技术java, spring springmvc, mybatis, bootstra…

跨浏览器开发:CSS代码的金科玉律

作为Web设计师,你的网站在各种浏览器中有完全一样的表现是很多人的目标,然而这是一个永远无法真正实现的目标,很多人认为,完美的跨浏览器兼容并不必要,这样说虽然没错,但在很多情形,一种近似的兼…

Refit结合Polly访问ASP.NET Core Web API

前言在.NET Core应用中访问ASP.NET Core Web API接口,常用的方式是使用IHttpClientFactory生成HttpClient实例,并通过结合Polly策略,以实现重试,熔断等机制。在本文中,我们将介绍如何使用Refit,结合Polly访…

10个经典的爆炸化学反应,个个都是你惹不起的“暴脾气”

全世界只有3.14 % 的人关注了爆炸吧知识没有放过火,没有爆炸过,就不算真正学化学的。还有谁能比化学狗们的胆子更大、回忆更深刻吗?化学狗们能活到现在简直是个奇迹~~~懂的就默默转了吧!小编整理…

狗为什么吃屎?真相男默女泪,但看完后你也会流口水......

全世界只有3.14 % 的人关注了爆炸吧知识别人笑狗太疯癫狗笑他人看不穿据说,200%的网友在学习一门新语言时,都会从最基本的日常问候语开始学起,例如——骂人。危险动作,请勿模仿。那但凡是学过汉语的人应该都知道,咱们中…

WPF开发登录窗口之——添加文本输入框用户控件

WPF开发者QQ群: 340500857 | 微信群 目前人数太多,暂不开放窗口开发完成后,接下来就是开发客户区中的输入框控件,但在开发之前,我们先开发一个输入框基类,然后通过继承的方式去实现文本输入框与密码输入框…

JSTL分割字符 fn:split()

2019独角兽企业重金招聘Python工程师标准>>> <% page language"java" contentType"text/html; charsetUTF-8"%> <% taglib uri"http://java.sun.com/jsp/jstl/core" prefix"c"%> <% taglib uri"http:/…

女友的前男友教我该怎么照顾她......

1 总觉得不太对劲&#xff1f;▼2 这回复真神&#xff01;&#xff08;via.机智得赵老师&#xff09;▼3 奇怪的知识又增加了......▼4 卖茶小妹真的与时俱进...&#xff08;via.外卖小哥金城武&#xff09;▼5 超大容量花露水没见过吧&#xff1f;&#xff01;▼6 别人在…

浅谈.Net异步编程的前世今生----EAP篇

前言在上一篇博文中&#xff0c;我们提到了APM模型实现异步编程的模式&#xff0c;通过使用APM模型&#xff0c;可以简化.Net中编写异步程序的方式&#xff0c;但APM模型本身依然存在一些缺点&#xff0c;如无法得知操作进度&#xff0c;不能取消异步操作等。针对这些缺点&…