IIS和MVC授权问题

3
有关设置授权的问题,我遇到了一些困难。 首先,我得到了:
<authorization>
  <deny users="?" />
</authorization>

因此,我拒绝所有未知用户,然后允许他们查看这些页面:

<location path="Default.aspx">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

<location path="Public">
  <system.web>
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>

现在来看问题...他们可以访问公共页面和Default.aspx..但不能访问www.mydomain.com或www.mydomain.com/..所以www.mydomain.com/Default.aspx可以正常工作。那么如何使它们起作用呢?
1个回答

11
请注意,在WebForms和MVC之间有一个基本的受保护资源的区别。在WebForms中,您要保护的资源是页面本身,由于页面存在于磁盘上的已知路径上,因此可以使用Web.config来保护它们。但是,在MVC中,您要保护的资源实际上是控制器和操作,而不是单个路径和页面。如果您尝试保护路径而不是控制器,则您的应用程序可能存在安全漏洞。
在MVC中,默认情况下,所有控制器+操作都对所有用户(包括经过身份验证和访客)都是可访问的。为了保护控制器或操作,提供了[Authorize]属性。有关更多信息,请参见http://www.asp.net/learn/mvc/#MVC_Security
简而言之,对于您的应用程序,听起来您想要为每个控制器添加[Authorize]属性,除了默认控制器和Public控制器。

非常感谢,那似乎是一个聪明的解决方案 :) - Patrik Potocki
此内容的更新MVC 4版本可在http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx找到。 - RickAndMSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接