我看到我在使用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();
}
}
答案 0 :(得分:3)
要删除Cookie,您必须将其到期日设置为现在或以前的日期发送它。使用HttpContext.Request.Cookies.Remove(Constants.User);
删除它只是从集合中删除它,但是它仍然存在于客户端浏览器中。
例如,代替使用Remove
函数,请使用:
Response.Cookies[Constants.User].Expires = DateTime.Now.AddDays(-1);