当前位置:  开发笔记 > 数据库 > 正文

如何在SSRS报告中确定当前用户所在的AD安全组?

如何解决《如何在SSRS报告中确定当前用户所在的AD安全组?》经验,为你挑选了1个好方法。

我需要在SQL Server Reporting Services报告中确定用户所属的安全组.对报告的访问将由两个组中的一个成员驱动:'report_name_summary'和'report_name_detail'.一旦用户执行报告,我们希望能够在"report_name_detail"组中使用其成员资格(或缺少成员资格)来确定是否应允许"向下钻取".

我不知道开箱即用的任何方式来访问当前用户的AD安全组成员身份,但我愿意接受能够从报告中访问此信息的任何建议.



1> PJ8..:

您可以将自定义代码添加到报表中. 这个链接有一些例子.

理论上,您应该能够编写这样的代码,然后使用返回值来显示/隐藏您想要的内容.但是,您可能会遇到此方法的权限问题.

Public Function ShouldReportBeHidden() As Boolean
Dim Principal As New System.Security.Principal.WindowsPrincipal(System.Security.Principal.WindowsIdentity.GetCurrent())
If (Principal.IsInRole("MyADGroup")) Then
    Return False
Else
    Return True
End If
End Function

或者,您可以将详细报告添加为摘要报告的子报告.然后,您可以使用SSRS中内置的安全功能来限制对子报表的访问.


由于对dll的权限和信任级别,对System.Security.Principal.WindowsIdentity.GetCurrent()的调用对我而言失败。使用System.Threading.Thread.CurrentPrincipal.Identity代替了原来的技巧:将Dim Principal作为新的System.Security.Principal.WindowsPrincipal(System.Threading.Thread.CurrentPrincipal.Identity)
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有