【问题标题】:Cannot sign out with AuthenticationManager无法使用 AuthenticationManager 注销
【发布时间】:2016-05-11 05:58:07
【问题描述】:

每当用户按下按钮时,我都会尝试退出该用户。这是被调用的方法。

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

当用户按下按钮时,该方法会被点击,但用户永远不会退出。不会发生异常,用户根本不会退出。

【问题讨论】:

  • 你说按钮时是否使用了锚点?
  • 您能详细说明一下吗? “锚点”是什么意思?
  • LogOff 标签
  • 我正在使用表单。 @Html.BeginForm("LogOff", "Account", FormMethod.Post) 后跟以下标签; <a href="javascript:document.getElementById('logoutForm').submit()">sign out</a>

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


【解决方案1】:

试试下面的代码

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

【讨论】:

  • 没区别,我还没有退出。
  • @Detilium AuthenticationManager.SignOut() 失败的原因是 Response.SetStatus(HttpStatusCode.SeeOther) 在内部结束了响应: public static void SetStatus(this HttpResponseBase response, int httpStatusCode) { response.StatusCode = http状态码;响应。结束(); }
  • “工作与否”是什么意思?最初的答案没有用,我不确定我是否理解评论。所以Http响应结束了,有什么解决办法呢?您在评论中发布的方法?你能更好地格式化你的评论吗?
  • @Detilium 请在 FormsAuthentication.SignOut() 之后尝试一小行代码;即 Session.Abondon() .....
  • 还是不行。我仍然登录。每当我注销时,应用程序应该重定向到家庭控制器中的索引。当 HomeController 检查 User.Identity.IsAuthenticated 时,我“应该”退出,应用程序应该将我重定向到登录页面。
【解决方案2】:

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>
                                }

【讨论】:

  • 你的 Html.BeginForm 有 id 吗?像这样:@using (Html.BeginForm("LogOff", "Account", FormMethod.Post , new { id = "logoutForm" } ))
  • 是的。否则我不会像我一样点击控制器中的方法,因为a 标签不知道要点击什么形式,因此不知道要点击什么动作。
  • 您是否尝试在没有“使用”阻止的情况下注销?没有那部分它可以工作吗?
猜你喜欢
  • 1970-01-01
  • 2021-06-15
  • 2017-12-25
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 2016-10-26
  • 2016-11-14
相关资源
最近更新 更多