【问题标题】:Can SQL Reporting Services work with ASP Membership Provider?SQL Reporting Services 可以与 ASP Membership Provider 一起使用吗?
【发布时间】:2012-03-15 15:15:51
【问题描述】:

我有一个通过 SQLMemberShipProvder 使用基于角色的安全性的 ASP.NET 站点。

是否可以使用我现有的 MembershipProvider 角色提供对 SSRS 报告的 Internet 访问?

例如,如果我有一个角色 SupportPersonRole,我可以只允许该角色的人使用某些报告吗?

文档说 SQL 2008 R2 对本地安全机构使用基本身份验证。但是,如果 SSRS 只能为 SSRS 内容提供其自己的基本身份验证登录,我不确定如何有机会使用 MembershipProvider 角色进行授权。

ASP.Net 页面需要处理报表参数提示,因此这似乎意味着“远程”模式适合获取此功能。

令人困惑的部分是 SSRS(在远程模式下)有它自己的角色安全凭证,它与 ASP.Net 基于角色的安全性是分开的。那么如何避免在这两个地方管理安全呢?

【问题讨论】:

    标签: asp.net sql-server reporting-services asp.net-membership sql-server-2008-r2


    【解决方案1】:

    如果您在您的网站中包含报告查看器控件,则您可以限制谁可以看到此页面,以及他们可以通过您的网站前端运行哪些报告。

    然后可以保护您与 SSRS 服务器(从 Web 服务器到它)的连接,以便只有您的站点可以访问这些报告。

    【讨论】:

    • 这是一个 MVC 站点 - 您引用的控件是否需要 WinForms?
    • 确实有,但有办法和手段。大量关于的链接,例如stackoverflow.com/questions/4137835/…
    • 好的,该链接证明该控件可以在 MVC 中作为 ASPX 页面工作。但问题的关键部分仍然在 ASPX 页面上,如何将特定报告限制为特定的 MembershipProvider 角色?
    • 在您的代码中,您可以限制哪些角色可以调用哪些报告 - 您需要进行设置,例如,您的数据库中可能有一个 reportforroles 表。
    • 令人困惑的部分是 SSRS(在远程模式下)有它自己的角色安全凭证,它与 ASP.Net 基于角色的安全性是分开的。那么如何避免在这两个地方管理安全呢?
    【解决方案2】:

    您还可以将LocalReport 渲染到您选择的输出。如果您不需要控件提供的那么多选择,这可能是一个不错的选择。

    // Controller Action
    public ActionResult GetReport(ReportParameters foo)
    {
        string mimeType;
        var stream = foo.RenderReport(out mimeType);
        return new FileStreamResult(stream, mimeType);
    }
    
    class ReportParameters {
        public Stream RenderReport(out string mimeType)
        {
            var localReport = new LocalReport();
            // ... TODO: Set up report data sources render call out variales, etc.
            byte[] renderedBytes;
            renderedytes = localReport.Render(
                    reportType,
                    deviceInfo,
                    out mimeType,
                    out encoding,
                    out fileNameExtension,
                    out streams,
                    out warnings);
            return new MemoryStream(renderedBytes);
        }
    }
    

    【讨论】:

    • 如果我理解正确,本地模式不提供自动报告参数提示(rdl vs. rdlc)。
    猜你喜欢
    • 2017-04-27
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多