如何使用Web窗体组件为MVC站点配置站点授权?

时间:2013-05-01 08:02:43

标签: asp.net-mvc-4 web-config authorization forms-authentication webforms

我有一个MVC网站,我需要使用ReportViewer控件与SSRS集成。这意味着我需要在站点内有一个专门用于处理报告的Web窗体页面。值得庆幸的是,这是相当无痛的。但是,我的身份验证/授权管理方式会产生一些问题。

目前,我有一个全局过滤器,将AuthorizeAttribute应用于所有控制器。然后,我使用AllowAnonymous属性

在Login控制器上装饰了适当的方法

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

在web.config中我尝试了以下内容:

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

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

然而,这优先于MVC中登录方法上应用的AllowAnonymous属性,因此您不断被重定向到返回登录页面。

更改配置以使用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个单独的位置来管理授权设置?

0 个答案:

没有答案