使用IIS和MVC进行授权的问题

时间:2009-02-20 18:43:42

标签: asp.net-mvc iis iis-7 authorization

设置授权时出现问题。 首先我得到了:

<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.mydmain.com/Default.aspx工作正常。 那么如何让这些工作呢?

1 个答案:

答案 0 :(得分:11)

请记住,WebForms和MVC之间的受保护资源存在根本区别。在WebForms中,您尝试保护的资源是页面本身,并且由于页面存在于知名路径的磁盘上,因此您可以使用Web.config来保护它们。但是,在MVC中,您尝试保护的资源实际上是控制器和操作,而不是单个路径和页面。如果您尝试保护路径而不是控制器,则您的应用程序可能存在安全漏洞。

在MVC中,默认情况下,所有用户都可以访问所有控制器+操作,包括经过身份验证的用户和来宾。为了保护控制器或操作,已提供[授权]属性。有关详细信息,请参阅 http://www.asp.net/learn/mvc/#MVC_Security

简而言之,对于您的应用程序来说,您希望将每个控制器除外)默认控制器和具有[Authorize]属性的Public控制器属性化。