润乾报表数据权限控制方案
售前现场交流或售后技术支持阶段,经常被客户问到:“你们报表系统是怎么搞权限控制的?”
既然经常被问,那么今天就讨论一下这个问题。
首先呢,看看权限管理长啥样!
权限管理:(来自百度百科),一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。
权限管理几乎出现在任何系统里面,一般只要有用户的系统就可能涉及权限管理。
从控制力度来看,可以将权限管理分为两大类:
1,功能级权限管理;
2,数据级权限管理。
功能级权限管理是系统要做的事情,比如哪些人可以看到系统的哪些菜单和资源,通常可以由系统开发人员根据业务的流程逻辑控制。而数据级的权限,特别是报表的数据权限,则是由报表可以控制或应该控制的事情。
报表的数据权限控制,可以直观地理解为:不同的机构、角色或具体到人,访问同一张报表时所看到的数据是可能不同的。比如,工资条(也是一张简单的报表),因为绝大多数公司薪资都是保密的,所以很显然,系统内不同人看到的结果是不能相同的。 再比如,区域销售情况统计,各区域销售经理也只能看到所在区域的数据等等。
实际应用环境中,解决此类问题一般是通过直接在 SQL 中筛选出数据绘制报表模板,然后按照登录对象访问指定的模板就可以了。但是,如果使用用户的人员众多,就需要制作 N 多张样式相同只是 SQL(报表数据集)略有不同的报表,工作量大且不利于后期维护。
Then,润乾报表是如何解决数据权限控制的呢?
实际上,针对这种数据权限问题,在润乾报表工具中,可以简单地通过参数或者宏的方式来实现,报表接收到系统传来的人员账号等信息参数,动态显示报表中的数据就行了,从而达到数据权限控制的目的。
接下来,咱们就赶紧瞅瞅该怎么做:
第一步:数据准备
这里采用 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**** 实现数据权限
新建一张报表模板
(1)报表数据集中新建一个“sql 类型”数据集,名称为:m_datas,SQL 语句写成:
SELECT m_datas.id,m_datas.data,m_datas.role,m_roles.rolename FROM m_datas,m_roles
WHERE m_datas.role = m_roles.role ${pri}
根据数据集 m_datas 设计模板并定义表达式:
其中:
A2单元格录入表达式:=m_datas.select(id)
B2单元格录入表达式:=m_datas.data
C2单元格录入表达式:=m_datas.role
D2单元格录入表达式:=m_datas.rolename
(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 时,仅出现角色 ID>=3 的数据
肿么样, 是不是很简单?
最后,总个结: 润乾报表不是系统平台,而是一款面向程序猿用于开发报表的工具类软件产品。之所以不做成统一平台,是为了方便和其他应用系统搞在一起,也就是常说的集成,报表开发后,就可以在系统内作为资源被访问了。而对于功能或资源权限,并不是润乾报表有功能缺失,而是这类控制更容易让集成应用自己去管,而且也可以免去重复登录验证或搞单点登录的麻烦。
更多方案类相关问题请查看:方案与选型相关问题分类导航
* 报表没完没了怎么办
* 报表工具——开源还是商用
* 上线一套 BI 系统到底需要多少钱???
* 十大理由选择润乾报表
* 质冠商用 价怼开源 | 润乾报表工具
* 中国式复杂报表:不完全分组报表制作对比(润乾 vs 帆软)
* birt 报表与润乾报表对比