SQL Reporting Services可以使用ASP成员资格提供程序吗?

时间:2012-03-15 15:15:51

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:4)

您还可以将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);
    }
}
相关问题