未应用AllowAnonymous属性,控制器操作仍需要登录

时间:2013-08-26 19:17:09

标签: .net asp.net-mvc security umbraco

我有一个建立在Umbraco上的整个网站,需要限制对所有网页的访问。唯一的例外是登录页面和注销确认页面。

要限制只有已登录用户的访问权限,我在web.config中有以下内容:

<deny users="?"/>

然后,为了在注销确认页面上允许匿名用户,我在LoggedOut控制器方法的开头有以下属性:

[Umbraco.Web.WebApi.MemberAuthorize(AllowAll = true)]
public ActionResult LoggedOut()
{
    var viewModel = new LogoutSuccessViewModel();
    viewModel.Message = "Hello";
    return View("LogoutSuccess", viewModel);
}

我也尝试了更标准的MVC使用方式:

[AllowAnonymous]

无论哪种方式,当我成功注销时,应用程序会将我转发到注销确认,然后它需要我登录才能看到它,因此它会再次转发到登录页面。 :(

如何允许匿名用户?

1 个答案:

答案 0 :(得分:3)

您的<deny users="?"/>文件中有web.config。这意味着匿名用户无权访问您的应用程序。所以,当然[AllowAnonymous]不起作用。

您需要允许匿名访问web.config文件中的注销路径,如下所示:

<configuration>
   <location path="Path to your LoggedOut Action">
      <system.web>
         <authorization>
            <allow users="?"/>
         </authorization>
      </system.web>
   </location>
</configuration>

但是,您为什么要匿名访问注销页面?这没有任何意义。