我一直在尝试执行Logout操作(使用Cookie进行表单身份验证)但无法调用POST Logout操作方法。
这是我的部分视图:
<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,然后重定向到“登录页面”。 但它不起作用。 相反,它直接进入登录页面而不访问Logoff操作方法。我有这个网址: http://localhost/Account/Login?ReturnUrl=%2FAccount%2FLogoff
有人可以提供有关如何实现此功能的意见吗?
答案 0 :(得分:0)
我知道你已经在这个过程中了,但你可以在动作控制器中使用WebSecurity方法而不是你的动作方法...(OathWebsecurity,WebSecurity.Logout(); ...等等)
答案 1 :(得分:-1)
尝试下面的代码,希望它有帮助。
<a class="navbar-brand" href="javascript:submitform()" title="Logout">
<img alt="Home" src="@Url.Content(" ~/Images/logout.png ")"/>
</a>
<script type="text/javascript">
function submitform()
{
$("#logoutForm").submit();
}
</script>