删除ASP MVC中已存在的cookie

时间:2014-11-11 18:48:58

标签: asp.net-mvc cookies

我尝试过其他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");
    }

我完全明白这不是解决这个问题最安全的方法。我知道。这不是最终产品,我只需要现在有用的东西。

1 个答案:

答案 0 :(得分:1)

您的代码应该像这样完全(基于我链接的示例):

public ActionResult LogOff()
{
    var temp = new HttpCookie("user");
    temp.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(temp);
    return RedirectToAction("Index", "Home");
}