无法删除Cookie

时间:2019-02-11 20:54:55

标签: c# asp.net-mvc cookies

我看到我在使用HttpContext.Request的remove方法后立即在调试中删除了cookie,但是当我重定向到另一个动作时,我仍然可以获得cookie值。为什么会这样?

public class LoginController : Controller
{

  public ActionResult Logout()
  {       
   HttpContext.Request.Cookies.Remove(Constants.User);     

   //I see that HttpContext.Request.Cookies[Constants.User] returns null in this line.

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

  public ActionResult Login()
  {
    var userCookie = HttpContext.Request.Cookies[Constants.User];

    // But HttpContext.Request.Cookies[Constants.User] is not null here. I get the value from it.

    if (userCookie != null)
      return RedirectToAction(Constants.MainPage, Constants.MainPage);
    else
      return View();
  }
}

1 个答案:

答案 0 :(得分:3)

要删除Cookie,您必须将其到期日设置为现在或以前的日期发送它。使用HttpContext.Request.Cookies.Remove(Constants.User);删除它只是从集合中删除它,但是它仍然存在于客户端浏览器中。

例如,代替使用Remove函数,请使用:

    Response.Cookies[Constants.User].Expires = DateTime.Now.AddDays(-1);