我一直在尝试执行注销操作(使用cookie的表单身份验证),但无法调用POST注销操作方法。ASP.net MVC无法调用POST注销方法
这里是我的局部视图:
<nav class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="nav navbar-nav navbar-right">
@using (Html.BeginForm("Logoff", "Account", FormMethod.Post, new { id = "logoutForm" }))
{
@Html.AntiForgeryToken()
<a class="navbar-brand" href="javascript:document.getElementById('logoutForm').submit()" title="Logout">
<img alt="Home" src="@Url.Content(" ~/Images/logout.png ")"/>
</a>
}
</div>
</div>
</nav>
我打电话下面主页这部分查看标题:
<header role="banner">
@Html.Partial("_HomeHeader")
</header>
<div class="container">
.......
</div>
在我的帐户控制器,我定义了以下操作方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Logoff()
{
FormsAuthentication.SignOut();
Session.Clear();
return Redirect(FormsAuthentication.LoginUrl);
}
因此,单击主页上的注销按钮时,应该转到“注销”操作方法并清除cookie,然后重定向到登录页面。 但它不起作用。 而是直接进入登录页面而不访问注销操作方法。我得到这个网址: http://localhost/Account/Login?ReturnUrl=%2FAccount%2FLogoff
任何人都可以请提供他们关于如何实现此功能的输入?
当您尝试访问的页面需要身份验证并且您未经身份验证或权限不足时,通常会获得'/ Account/Login?ReturnUrl = blah'。 –
在这种情况下,'Logoff'操作方法需要身份验证来访问它,并且可能'FormsAuthentication.SignOut()'在注销过程中移除授权cookie - 尝试使用'AllowAnonymousAttribute'标记'Logoff'操作方法。 –
添加[AllowAnonymous]属性为我工作。感谢Tetsuya。 –