2011-05-03 16 views
6

Básicamente estoy intentando configurar una cookie después de que un usuario inicie sesión para conservar su nombre de usuario la próxima vez que inicie sesión. Aquí está mi código para establecer la cookie. Cuando miro las cookies del sitio en Firefox tan pronto como se establece la cookie, muestra la cookie sessionID, pero no la que acabo de configurar. Cuando reviso los encabezados en Fiddler, no lo veo configurando la cookie, solo mi cookie sessionID.ASP.Net MVC Las cookies no persisten

HttpCookie hc = new HttpCookie("username", model.UserName); 
hc.Expires = DateTime.Now.AddYears(1); 
System.Web.HttpContext.Current.Request.Cookies.Add(hc); 

Aquí es donde compruebo si existe la cookie.

if (System.Web.HttpContext.Current.Request.Cookies["username"] != null) 

Aquí está el contexto completo de los métodos en cuestión

public ActionResult LogOn() 
{ 
    if (System.Web.HttpContext.Current.Request.Cookies["username"] != null) 
     return View(new LogOnModel { UserName = System.Web.HttpContext.Current.Request.Cookies["username"].Value }); 
    else 
     return View(); 
} 

[HttpPost] 
public ActionResult LogOn(LogOnModel model, string returnUrl) 
{ 
    if (ModelState.IsValid) 
    { 
     if (MembershipService.ValidateUser(model.UserName, model.Password)) 
     { 
      HttpCookie hc = new HttpCookie("username", model.UserName); 
      hc.Expires = DateTime.Now.AddYears(1); 
      System.Web.HttpContext.Current.Request.Cookies.Add(hc); 

      FormsService.SignIn(model.UserName, model.RememberMe); 
      if (!String.IsNullOrEmpty(returnUrl)) 
      { 
       return Redirect(returnUrl); 
      } 
      else 
      { 
       return RedirectToAction("Index", "Home"); 
      } 
     } 
     else 
     { 
      ModelState.AddModelError("", "The user name or password provided is incorrect."); 
     } 
    } 

    return View(model); 
} 
+0

No es necesario pasar por System.Web. [.. .] para trabajar con los objetos Solicitud y Respuesta. Ya están expuestos por el controlador. Aunque lo dudo, es posible que tengas problemas por cómo lo haces ahora porque no estás en contexto con la aplicación MVC real. @ La respuesta de Adam debería ser tu solución. – Gup3rSuR4c

Respuesta

9

Añadir a la no Response.Cookies Request.Cookies

+1

+1. ¡Timbre! Eso fue fácil. –

+0

Impresionante, sabía que era algo simple que estaba pasando por alto. – Jhorra