Asp.net mvc 2 如何通过Web.Config中的位置标记使ASP.NET MVC视图不安全

Asp.net mvc 2 如何通过Web.Config中的位置标记使ASP.NET MVC视图不安全,asp.net-mvc-2,Asp.net Mvc 2,我的web.config中有以下授权设置: <authorization> <deny users="?" /> </authorization> 此拒绝对应用程序的所有匿名访问并接受登录页面。除此之外,我还在每个控制器操作中通过自定义authorize属性使用授权 除了登录页面之外,我还想公开一个额外的操作。此特定操作没有授权属性。我已尝试使用web.config文件中的location标记将此视图(resetPassword视图)公开

我的web.config中有以下授权设置:

 <authorization>
      <deny users="?" />
 </authorization>

此拒绝对应用程序的所有匿名访问并接受登录页面。除此之外,我还在每个控制器操作中通过自定义authorize属性使用授权

除了登录页面之外,我还想公开一个额外的操作。此特定操作没有授权属性。我已尝试使用web.config文件中的location标记将此视图(resetPassword视图)公开,如下所示:

 <location path="Account/ResetPassword" allowOverride="false">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

在上面的路径属性中,我尝试了视图和操作路径,但它不允许公众访问操作

我甚至尝试将此视图放置在共享文件夹中的一个单独文件夹中,并放置一个单独的web.config文件以使该文件夹公开,如下所示:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</configuration>

以上配置都不允许我将此特定操作(视图)公开。有人能提出其他解决方案吗?或者我在这种情况下可能做错了什么?
提前感谢。

您可以从web配置中删除授权标记,只需使用authorize属性即可。 没有Authorize attribute集的操作将是公开的

不久前我也有同样的问题。请看一下

如果您想使用web配置来完成,那么请使用如下代码

<!-- Allow access to _assets directory -->
<location path="_assets">
    <system.web>
       <authorization>
           <allow users="?"/>
       </authorization>
    </system.web>
</location>


在您的示例中,您使用的是“*”,但您应该使用“?”;)

我理解这一点,但我假设通过这种方式,web.config在web应用程序的整个内容上实现了第二级安全性。我也想保留这个。有办法吗?@Nosh:我已经按照你的要求编辑了我的答案。试试这个。谢谢你的帮助,不幸的是,改变角色并不能解决我的问题。@Nosh:很抱歉,没有帮助。我使用我发布的代码使资产(js、css、图像)在用户未登录且正常工作时也可用。但就我而言,这是一条真正的道路。在您的情况下,控制器/操作不是文件系统上的路径,因此我认为您应该删除“第二级安全性”,只依赖于您真正需要的Authorize属性。祝你好运我同意,我认为location属性更适合应用程序中有实际物理页面的web表单环境。否则,ASP.NET MVC团队需要对此进行研究,并实现MVC的location属性。但目前授权属性只能提供唯一级别的安全性。请参阅下面帖子的评论以获得实际答案。