我尝试过其他SO问题但没有人提供帮助。基本上他们说我需要将到期时间设置为负值(我已经做过),然后添加它。
这是我的问题。我正在尝试删除已存在的cookie。
码
public ActionResult LogOff()
{
Response.Cookies["user"].Expires = DateTime.Now.AddDays(-1D);
Response.Cookies.Add(Response.Cookies["user"]);
return RedirectToAction("Index", "Home");
}
我尝试了一些东西,但基本上如果我创建一个新的cookie,那个被删除但不是原始用户cookie。基本上我试图抓住名为user的cookie,并清除它。我所拥有的是没有工作所以我试图制作一个临时变量的cookie并删除它(在另一个问题上看到这个问题,并没有理解它在我的情况下会起作用,但我还是试过了):
public ActionResult LogOff()
{
//AuthenticationManager.SignOut();
HttpCookie temp = Response.Cookies["user"];
temp.Expires = DateTime.Now.AddDays(-1D);
Response.Cookies.Add(temp);
return RedirectToAction("Index", "Home");
}
由于某些原因,这不起作用。虽然我有点理解,但我所做的就是说"新的http cookie = cookie命名用户,删除新的cookie"但我还是在我开始的地方。
Robert正在使用的完整代码
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
InsertToDB(model.Email, model.Password);
HttpCookie cookie = new HttpCookie("user");
String loginCred = model.Email.Trim();
cookie.Value = loginCred;
cookie.Expires = DateTime.Now.AddSeconds(180);
Response.Cookies.Add(cookie);
return RedirectToAction("Index", "Home");
}
// If we got this far, something failed, redisplay form
return View(model);
}
我还没有设置登录设置,但是注册表现在正在设置cookie。
然后单击“注销:
” public ActionResult LogOff()
{
HttpCookie temp = Response.Cookies["user"];
temp.Expires = DateTime.Now.AddDays(-1D);
Response.Cookies.Add(temp);
return RedirectToAction("Index", "Home");
}
我完全明白这不是解决这个问题最安全的方法。我知道。这不是最终产品,我只需要现在有用的东西。
答案 0 :(得分:1)
您的代码应该像这样完全(基于我链接的示例):
public ActionResult LogOff()
{
var temp = new HttpCookie("user");
temp.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(temp);
return RedirectToAction("Index", "Home");
}