多语言展示
当前在线:1835今日阅读:23今日分享:25

bi报表系统FineReport中模板访问权限设置

集成报表后,希望不同的用户登录,所能看到的报表是不同的,没有权限的用户查看报表时提示没有权限,下面我们就通过bi报表系统FineReport来简单介绍一下。
工具/原料
1

bi报表系统FineReport7.1.1

2

大小:148.2M 适用平台:windows/linux

方法/步骤
1

前提准备报表工程:如直接使用内置Jetty服务器中的报表工程WebReport,端口为8075;用户系统:如用户工程PFDemo发布于IIS服务器,端口为80,可省;报表工程已经配置了身份验证,并实现了单点登录,如其中存在用户A/123、B/123。

2

载入FR提供的BouncyCastle.Crypto.dll及Com.FineReport.dll数字签名库下载FR提供的BouncyCastle.Crypto.dll及Com.FineReport.dll数字签名库;在用户.net系统中载入这两个数字签名库。

3

用户系统中添加一个web接口给报表工程提供公钥用户系统中提供一个web接口,如创建一个getKey.aspx,可以通过http://localhost/getKey.aspx来获取公钥,代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="getKey.aspx.cs" Inherits="PFDemo.getKey" %>

4

在页面Page_Load事件中调用我方提供的dll的接口,返回公钥信息,对应的后台cs代码getKey.aspx.cs为:using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Com.FineReport.net;namespace PFDemo{    public partial class getKey : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                try                {                    // 获得公钥的两个参数,传回                    String modulus = FRPrivilegeFilterHelper.getPublicKeyModulus();                    String exponent = FRPrivilegeFilterHelper.getPublicKeyExponent();                    Response.Write(modulus + "&" + exponent);                }                catch (Exception e1)                 {                    Response.Write("error");                }                return;            }        }    }}

5

报表工程中获取用户系统的公钥登陆FR管理平台http://localhost:8075/WebReport/ReportServer?op=fr_platform,选择权限配置>详细权限配置;数字签名密钥地址为http://localhost/getKey.aspx,点击提交:

6

用户系统发送报表请求加入数字签名信息如最上图中登陆后的主界面为index.aspx,代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="PFDemo._Default" %>    PFDemo   

                                                             
       Privilege Demo       Current user:                           
       
           
  •                             Report1(A,B)       
  •        
  •                             Report2(A)       
  •