无法在注销时删除 cookie

Posted

技术标签:

【中文标题】无法在注销时删除 cookie【英文标题】:Not able to delete the cookies on logout 【发布时间】:2015-03-12 15:06:30 【问题描述】:

//接口--注入控制器

  public interface IContext

    HttpRequestBase Request  get; 
    HttpResponseBase Response  get; 

//实现

  public class Context : IContext

    public HttpRequestBase Request  get  return new HttpRequestWrapper(HttpContext.Current.Request);  
    public HttpResponseBase Response  get  return new HttpResponseWrapper(HttpContext.Current.Response);  

//在登录时设置Cookie。 SetCookie(_context, login);

public void SetCookie(IContext context, Login login)

        var loginDetails = new javascriptSerializer().Serialize(login);
        var cokie = new HttpCookie("login", login);
        context.Response.Cookies.Add(cokie);

//尝试注销。

    public ActionResult Logout()
    
        foreach (var key in _context.Request.Cookies.AllKeys)
        
            try
            
                _context.Response.Cookies.Remove(key); //this didn't work

                //tried this even this is not working
                var login = new Login Identity = "", LogIn = false;
                _login.SetCookie(_context, login);
            
            catch (Exception e)
            
            
        
        _context.Response.Cookies.Clear(); //this didn't work either

        return RedirectToAction("Index", "Login");
    

在登录索引上,当我检查当前登录 cookie 值时,它始终具有登录用户的值,只是没有设置为 null 或空。 我怀疑 IContext 的实现有问题。应该有一个二传手吗?不确定..

也试过了:

        var cokie = context.Request.Cookies["login"];
        cokie.Expires = DateTime.Now.AddDays(-2);
        cokie.Value = null;
        context.Response.Cookies.Add(cokie);

【问题讨论】:

【参考方案1】:

如果您使用表单身份验证,则可以使用以下代码。它将清除所有必需的 cookie

FormsAuthentication.SignOut();
Session.Abandon();

你也可以使用

Session.Abandon();
Response.Cookies.Clear();

YourCookies.Expires = DateTime.Now.AddDays(-1d);

欲了解更多信息,请访问

MSDN Cookie Help

【讨论】:

【参考方案2】:

如果你使用登录用户

SignInManager.PasswordSignInAsync(...)

你可以试试

AuthenticationManager.SignOut();

而不是

_context.Response.Cookies.Clear();

【讨论】:

以上是关于无法在注销时删除 cookie的主要内容,如果未能解决你的问题,请参考以下文章

使用 cookie 时注销

Swift 4 WKWebView cookie 获取和删除同步问题

删除用户注销 API 的 grafana cookie

在用户注销时从我的应用程序中删除 facebook 会话 cookie

phpmyadmin 在第一次单击时注销

在春季安全或角度注销时清除cookie