无法使用AuthenticationManager注销

时间:2016-05-11 05:58:08

标签: c# .net asp.net-mvc authentication

我试图在他/她按下按钮时注销用户。这是被调用的方法。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
    using (var log = new Log("AccountController.LogOff()"))
    {
        AuthenticationManager.SignOut();
        return RedirectToAction("Index", "Home");
    }
}

当用户按下按钮时,方法会被命中,但用户永远不会被注销。没有例外,用户根本就没有退出。

2 个答案:

答案 0 :(得分:0)

尝试以下代码

public ActionResult Logoff()
{
    FormsAuthentication.SignOut();
    return RedirectToAction("Index");
}

答案 1 :(得分:0)

LogOff函数具有[HttpPost]和[ValidateAntiForgeryToken]标记。所以它正在等待发送AntiForgeryToken的表单。所以你必须为这种情况设置你的按钮。

您的注销按钮在视图中必须如下所示:

@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" }))
                                {
                                    @Html.AntiForgeryToken()
                                    <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
                                }