润乾报表权限管理机制


一、背景说明

权限管理一般指在系统设置的安全规则或者安全策略约束下,用户可以访问而且只能访问自己被授权的资源。可以说,权限管理几乎会出现在任何有用户的系统里面。

按照控制对象的不同,权限管理方式可以划分为以下三类:

1、资源树权限控制

2、数据表及字段权限控制

3、数据权限控制

下面我们具体来看一下润乾报表是如何实现权限管理的。

二、资源树权限控制

1、背景说明

资源树主要是对于用户访问的页面上一般在左侧的树形结构来进行控制,通过编辑这个树形结构,可以引导用户作导航式访问。针对不同的节点,可以设置用户权限、参数表单、超链接等等。除根节点外,其他节点均可进行授权控制,设置权限后可以对用户、机构进行管理,建立多层次的分类管理体系,并且可以控制不同用户、机构的权限,从而保证用户只能看到与自己相关的、被授权的报表信息,从而可靠保证企业的数据和信息安全。

2、实现方法

润乾报表自带的报表中心模块可以通过简单的可视化设置实现需求。具体操作如下:

1)机构用户管理配置

在润乾报表中心的“用户管理”、“机构管理”页面配置自己的用户和机构信息,便于在资源树节点配置页面利用这些信息设置权限。

此外,在机构管理页面也可以配置目录的访问权限,如下图所示:

imagepng

2)资源树权限配置

点击左上角的”+”按钮,添加资源节点,并配置节点信息:节点类型、名称、权限。如下图所示:

imagepng

其中,关于节点的详细介绍和配置可以参考教程:http://doc.raqsoft.com.cn/report/center/gns9.html

3)效果预览

admin 登录时可以查看到所有的资源树内容,如下图所示:

imagepng

王伟登录时只可以看到“金商百货批发公司”的资源树内容,如下图所示:

imagepng

三、数据表、字段权限控制

1、背景说明

数据表、字段权限控制一般针对多维分析,例如:客户系统中有两个用户 root 和 guest。root 用户权限最大,可以查询全部指标;guest 用户只有部分权限:只能查看个别表的指标。

2、实现方法

root 和 guest 对应两个 vsb 可视文件,在润乾报表中通过使用变量传递不同的 Tag 属性值达到权限控制的目的。

3、具体操作

1)制作 vsb 可视文件

通过 DQL 设计器分别建立 vsb 可视文件:root.vsb、guest.vsb。

根据需求在 vsb 文件中设置表的可见性和字段可见性:

imagepng

(表可见性设置)

imagepng

(字段可见性设置)

2)配置 Tag 属性

把 vsb 文件放到应用根目录下,配置 tag 标签加载属性。

示例代码:

//java代码判断,如果当前用户是root则通过Tag属性传递如下值:

String username=request.getAttribute("username");

Stringvisibility=””;

if(username==”root”)

visibility = "root.vsb";//root.vsb:对元数据中的所有表都可见

//如果当前用户是guest则通过Tag属性传递如下值:

else

visibility= "guest.vsb";//guest.vsb:仅对元数据中的部分表可见

//在标签属性中配置可是文件的引用

 <raqsoft:detailQuery

 qyx="<%=qyx %>"

dataSource="<%=dataSource %>"

 dictionary=""

visibility="<%=visibility %>"

  />

3)效果预览

root 用户的查询页面 demo 如下图:

imagepng

guest 用户的查询页面 demo 如下图:

imagepng

四、普通报表数据权限控制

1、背景说明

针对报表的数据权限控制,可以直观地理解为:不同的机构、角色或具体到人,访问同一张报表时所看到的数据可能不同。比如,以工资条(也是一张简单的报表)为例,因为绝大多数公司薪资都是保密的,所以很显然,系统内不同人看到的结果是不相同的。 再比如,区域销售情况统计,各区域销售经理也只能看到自己所在区域的数据等等。

2、原理说明

通过参数的 ${参数名} 用法实现 sql 条件的动态拼接,动态进行数据过滤,从而实现数据权限控制。

3、实现方法

1)新建测试报表

以雇员表中的雇员信息为例,建立清单式报表:

imagepng

2)配置参数

imagepng

arg1 用于获取系统登录信息,arg2 用于动态拼接过滤条件,实现 admin 登录时查询全部信息,而普通员工登录时只可以查看自己的个人信息。

3)配置数据集

imagepng

数据集中使用 ${参数名} 方式引用 arg2 的计算结果,拼接到 sql 语句中。

例如,arg1 接受到的值是 admin 时,数据集 sql 执行语句为:ELECT 雇员. 雇员 ID, 雇员. 职务, 雇员. 城市, 雇员. 地区, 雇员. 姓氏 + 雇员. 名字 姓名 FROM 雇员 where 1=1.

4)效果预览

admin 登录时,查看到的用户信息如下图所示:

imagepng

王伟登录时,查看到的用户信息如下图所示:

imagepng

五、多维分析数据权限控制

1、场景说明

某销售部有很多员工,需要在进行多维分析时保证每个员工只能查询自己的订单情况,前面提到的使用多个 vsb 可视文件方式不能很好地实现需求。此时,我们可以在 vsb 可视文件中为订单表添加条件可见表达式,动态控制条件。

2、原理说明

表达式中使用 DQL 宏:${宏名称}。

PS:宏只能用在条件可见里,其中宏名称就是 ${} 中变量名称;宏值就是 ${} 里面变量的值。

3、实现方法

1)vsb 可视文件中配置条件可见表达式:

imagepng

2)在新建的 Test.jsp 中获取当前登录用户的信息,并传递给 DQLTableFilter 对象

  核心代码:

String userId="3";//填入宏值,写死参数值供测试使用

//在session中设置DQL表的权限条件

ArrayList filters = new ArrayList();

session.setAttribute("_raqsoft_filters_",filters);

if (dataSource.length()>0) {

  DQLTableFilter f = new DQLTableFilter("default",dataSource);

  filters.add(f);

  if (vsb.length()>0) f.setVsb(vsb);

  f.getParamValues().put("雇员",userId); //为条件可见中的DQL宏传递宏值

}

3)效果预览

访问上面新建的多维分析页面 Test.jsp,查询订单表中的指标,报表中展现出了雇员 ID 为 3 的订单信息:

imagepng

附 Test.jsp 完整代码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ page import="com.raqsoft.guide.web.*" %>

<%@ page import="com.raqsoft.guide.util.*" %>

<%@ page import="java.util.*" %>

<%@ page import="com.raqsoft.guide.resource.*" %>

<%@ taglib uri="/WEB-INF/raqsoftAnalyse.tld" prefix="raqsoft" %>

<%

String userId="3";//填入宏值

String vsb = "test.vsb";//指定要引用的可视文件

String dataSource = request.getParameter( "dataSource" );

if (dataSource == null) dataSource = "DataLogic";

if(vsb==null) vsb = "";

vsb = vsb.replaceAll("\\", "/");

//在session中设置DQL表的权限条件

ArrayList filters = new ArrayList();

session.setAttribute("_raqsoft_filters_",filters);

if (dataSource.length()>0) {

  DQLTableFilter f = new DQLTableFilter("default",dataSource);

  filters.add(f);

  if (vsb.length()>0) f.setVsb(vsb);

  f.getParamValues().put("雇员",userId);//为条件可见中的DQL宏传递宏值

}

%>

<raqsoft:analysev2

dataSource="DataLogic"

fixedTable="订单" 

/>

更多集成部署相关问题请查看:集成部署相关问题分类导航

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾