0

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

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

但是,这会导致 .aspx 被拒绝访问,即使是已登录的用户也是如此。

4

2 回答 2

1

您可以尝试allow在元素之后为所有经过身份验证/登录的用户添加deny元素:

<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>

这 ”?” 属于未经身份验证/匿名的用户(未登录),“*”属于其他所有人。第一个匹配的授权规则总是首先处理,从上到下的顺序。

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

<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>

参考:

允许元素进行授权(ASP.NET 设置架构)

用于授权的拒绝元素(ASP.NET 设置架构)

在 web.config 中为特定页面或文件夹设置授权规则

类似问题:

授权拒绝访问文件夹下的页面不起作用

拒绝匿名用户问题

于 2018-07-02T02:31:34.873 回答
0

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

于 2018-07-05T03:46:42.300 回答