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

4

1 回答 1

11

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

在 MVC 中,默认情况下,所有控制器 + 操作都可供所有用户访问,包括经过身份验证的用户和访客。为了保护控制器或操作,提供了 [Authorize] 属性。看http://www.asp.net/learn/mvc/#MVC_Security了解更多信息。

In short, it sounds like for your application you'd want to attribute every controller except the default controller and the Public controller with the [Authorize] attribute.

于 2009-02-20T20:18:02.907 回答