ReportViewerForMvc 限制访问 ReportViewerWebForm.aspx

ReportViewerForMvc restrict access to ReportViewerWebForm.aspx

我使用 ReportViewerForMvc,它将 ReportViewerWebForm.aspx 安装到根项目文件夹中。如何限制对 ReportViewerWebForm.aspx 的访问?我试过了

<location path="ReportViewerWebForm.aspx">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

但是,这会导致 .aspx 甚至拒绝登录用户的访问。

您可以尝试在 deny 元素之后为所有 authenticated/logged 用户添加 allow 元素:

<location path="ReportViewerWebForm.aspx">
    <system.web>
        <authorization>
            <deny users="?" />
            <allow users="*" />
        </authorization>
    </system.web>
</location>

或者试试这个例子:

<configuration>
    <system.web>
        <!-- authentication element -->

        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>

    <location path="ReportViewerWebForm.aspx">
        <system.web>
            <authorization>
                <allow users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>

那个“?”属于 unauthenticated/anonymous 用户(未登录),“*”属于其他所有人。第一个匹配的授权规则总是首先处理,从上到下的顺序。

如果您希望通过只允许某些角色打开报告查看器页面来限制对报告查看器页面的访问,请使用如下示例中的授权模式(提及所有允许的角色,用逗号分隔):

<location path="ReportViewerWebForm.aspx">
    <system.web>
        <authorization>
            <allow roles="rolename_1,rolename_2,..." />
            <deny users="*" />
        </authorization>
    </system.web>
</location>

注意:在使用授权规则前确保你已经有authentication元素:

<authentication mode="Forms">
   <forms loginUrl="~/Account/Login" ... />
</authentication>

参考文献:

allow Element for authorization (ASP.NET Settings Schema)

deny Element for authorization (ASP.NET Settings Schema)

Setting authorization rules for a particular page or folder in web.config

类似问题:

Authorization to deny access pages under a folder not working

Deny anonymous users problem

通过添加代码隐藏和子类化 ReportViewerForMvc.ReportViewerWebForm 解决,使用会话 cookie 在 Page_Load 事件中验证用户。