首页 > 其他 > 详细

润乾报表权限管理机制

时间:2019-12-17 10:36:23      阅读:127      评论:0      收藏:0      [点我收藏+]

一、背景说明

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

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

1、资源树权限控制

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

3、数据权限控制

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

二、资源树权限控制

1、背景说明

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

2、实现方法

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

1)机构用户管理配置

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

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

技术分享图片

2)资源树权限配置

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

技术分享图片

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

3)效果预览

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

技术分享图片

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

技术分享图片

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

1、背景说明

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

2、实现方法

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

3、具体操作

1)制作 vsb 可视文件

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

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

技术分享图片

(表可见性设置)

技术分享图片

(字段可见性设置)

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 如下图:

技术分享图片

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

技术分享图片

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

1、背景说明

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

2、原理说明

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

3、实现方法

1)新建测试报表

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

技术分享图片

2)配置参数

技术分享图片

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

3)配置数据集

技术分享图片

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

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

4)效果预览

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

技术分享图片

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

技术分享图片

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

1、场景说明

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

2、原理说明

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

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

3、实现方法

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

技术分享图片

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 的订单信息:

技术分享图片

附 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="订单"  />

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

润乾报表权限管理机制

原文:https://www.cnblogs.com/zozoxxma/p/12052528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!