我有一个 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 个单独的位置来管理授权设置?