我有一个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>
然而,这优先于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个单独的位置来管理授权设置?