2

我有一个 MVC 站点,我需要在其中使用 ReportViewer 控件与 SSRS 集成。这意味着我需要在站点中有一个专门用于处理报告的 Web 表单页面。谢天谢地,这是相当轻松的。但是,管理我的身份验证/授权的方式会产生一些问题。

目前,我有一个应用于AuthorizeAttribute所有控制器的全局过滤器。然后我用AllowAnonymous属性修饰了登录控制器上的适当方法

这不会影响 Web 表单页面,但意味着匿名用户可以直接导航到该页面。

在 web.config 中,我尝试了以下操作:

<system.web>
    <authorization>
        <deny users="?"/>
    </authorization>
    <authentication mode="Forms">
      <forms loginUrl="login/index" defaultUrl="home/index"/>
    </authentication>

    ...etc...
</system.web>

但是,这将优先于AllowAnonymous应用于 MVC 中登录方法的属性,因此您会不断地被重定向到登录页面的背面。

更改配置以使用location如下标签可以正常工作。

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

  <authentication mode="Forms">
    <forms loginUrl="login/index" defaultUrl="home/index"/>
  </authentication>

  ...etc...
</system.web>

这是正确的使用方法还是可以避免使用 2 个单独的位置来管理授权设置?

4

0 回答 0