如何控制SSRS报表中数据的访问权限
来源:互联网 发布:java语言与basic 编辑:程序博客网 时间:2024/06/04 18:50
如何控制SSRS报表中数据的访问权限
1 建立用户与维度属性值间的关系表,refAccountDim,该表存储了用户能访问的维度的属性值,也即用户权限
2 SSRS中建立带有账号参数的共享数据集,该数据集根据传入的账号从refAccountDim表中查询该账号的权限并返回,如区域
2.1 数据集输入参数为accountId
2.2 数据集需关联refAccountDim表,以获取用户的数据权限
2.3 输出必须是维度属性值的表达方式,如”[日期].[年份].&[2016]”
3 在SSRS报表中,将【2】的数据集添加到报表的数据集中
3.1 此时报表参数会自动添加accountId参数
3.2 在参数中,将accountId移动到第一个参数(因为ssrs的参数是按顺序获取的)
4 将【3】的数据集作为相应的参数的【可用值】和【默认值来源】,这样就实现了通过参数数据源的控制来控制对数据权限的控制
5 在web中使用ReportView加载SSRS报表,并向SSRS报表传递accountId参数
6 完成,当用户访问报表时,报表获取到用户的id,通过id查询到用户的相应维度的权限,然后通过该权限来限定用户的查询条件,通过查询条件来控制用户的数据访问权限
private void loadReport() { string reportName = Request["reportName"]; if (!string.IsNullOrEmpty(reportName)) { string accountId = getAccountIdFromCookie().ToString(); //设置服务端报表的基本参数 rptView.ServerReport.ReportServerUrl = new Uri("http://192.168.10.166/ReportServer"); rptView.ServerReport.ReportPath = "/BI-BNSY-SSRS/" + reportName; rptView.ServerReport.ReportServerCredentials = new CustomReportCredentials("administrator", "Allcity#123", ""); rptView.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote; /* * 此种参数传递方式会导致没有该参数的报表报错 * //获取要传递的账号信息 List<ReportParameter> rps = new List<ReportParameter>() { new ReportParameter("accountId", accountId) }; //设置服务端报表的参数 rptView.ServerReport.SetParameters(rps); */ /* */ //获取服务端报表所需的参数 ReportParameterInfoCollection rptParamInfos = rptView.ServerReport.GetParameters(); //将用户id输入到服务端报表参数中 List<ReportParameter> rptParams = new List<ReportParameter>(); ReportParameter rptParam; foreach (ReportParameterInfo item in rptParamInfos) { if (item.Name.ToLower() == "accountid") { rptParam = new ReportParameter(); rptParam.Name = item.Name; rptParam.Values.Clear(); //当前用户 rptParam.Values.Add(accountId); rptParams.Add(rptParam); } } //设置服务端报表的参数 rptView.ServerReport.SetParameters(rptParams); //刷新报表 rptView.ServerReport.Refresh(); } }
阅读全文
0 0
- 如何控制SSRS报表中数据的访问权限
- 【SSRS报表】C#中如何使用SSRS报表服务显示报表
- FineReport报表软件通过权限控制数据访问方案
- 报表系统FineReport通过权限控制数据访问方案
- 润乾报表v5通过权限控制数据访问方案
- SSRS报表中MDX语句数据集字段
- SSRS:如何消除SSRS报表导出EXCEL出现的合并列和隐藏列
- SSRS 如何设置报表参数的日期为当前日期
- 基于hana的BO报表数据权限的控制方法
- JAVA中访问权限的控制
- 填报表的权限控制
- 4.4、SSRS-报表的发布
- ranger控制数据访问权限
- 【SSRS报表】制作一张像样的报表
- Java中访问权限控制
- Java中访问权限控制
- java中访问控制权限
- Java中访问权限控制
- HDU4871-Shortest-path tree
- 运算符
- (转)Python-Tkinter布局管理器
- 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。
- idea破解(仅需一步)
- 如何控制SSRS报表中数据的访问权限
- ES5中的函数都是按值传递的
- unit10
- 洛谷P1346 电车
- 模拟实现堆+堆的应用
- android实现下拉框和输入框结合
- hadoop入门九(HDFS基本原理和操作)
- opencv3.1.0 SVM
- [Tensorflow]3.DCGAN代码及实验结果分析