2012-01-30 19 views
5

Al iniciar sesión con éxito, deseo guardar una cookie que contenga un nombre de usuario.Se perdió la sesión al guardar la cookie

¡La cookie se guarda correctamente y carga el nombre de usuario correctamente pero pierde la sesión!

El código es posible recuperar nombre de usuario es:

if (Request.Cookies["userName"] != null) 
{ 
    txtEmail.Text = Request.Cookies["username"].Value; 
    chkRemember.Checked = true; 
} 

El código para guardar nombre de usuario es:

HttpCookie aCookie = new HttpCookie("username"); 
aCookie.Value = txtEmail.Text; 
aCookie.Expires = DateTime.Now.AddYears(5); 
Response.Cookies.Add(aCookie); 

Cualquier ayuda será muy apreciada, gracias

+3

¿Qué quieres decir con sesión? ¿Sesión de ASP.NET? O formas sesión de autenticación? ¿Qué acciones estás realizando exactamente? ¿Estás cerrando el navegador en el medio? –

+0

La sesión de ASP.NET se restablece cuando se navega desde el formulario de inicio de sesión al siguiente formulario. Esto es solo después de agregar el código anterior. –

+0

¿El código anterior está en el formulario de inicio de sesión o en otro lugar? – M3NTA7

Respuesta

1

vi un artículo recientemente que sugirieron que subrayados en los nombres de página pueden causar problemas en las cookies, no he mirado en esto, pero puede ser que sea digno de la comprobación.

O bien, ¿está borrando sus cookies si el usuario no elige ser recordado?

He visto un ejemplo anterior recientemente en MSDN que muestra el método de eliminación que destruirá su sesión ... read the article.

Si es así, asegúrese de eliminar solo la cookie para el inicio de sesión; de lo contrario, es posible que esté perdiendo la cookie que contiene el sessionid.

A (muy) rápida traducción en CSharp del número de artículo:

for (int i = 0; i < limit; i++) 
    { 
     cookieName = Request.Cookies[i].Name; 
     aCookie = new HttpCookie(cookieName); 
     aCookie.Expires = DateTime.Now.AddDays(-1); 
     Response.Cookies.Add(aCookie); 
    } 

Con el ser solución añadiendo un control sobre el nombre de la cookie.

for (int i = 0; i < limit; i++) 
    { 
     cookieName = Request.Cookies[i].Name; 
     if (cookieName == "username") 
     { 
      aCookie = new HttpCookie(cookieName); 
      aCookie.Expires = DateTime.Now.AddDays(-1); 
      Response.Cookies.Add(aCookie); 
     } 
    } 

Además, no olvide que puede utilizar subclaves dentro de las cookies.

+0

Excelente gracias, las variables de la sesión se estaban perdiendo cuando "no recordaba" la cookie del servidor, estaba borrando todos los objetos de la cookie, incluida la identificación de la sesión. Gracias de nuevo. –

2

Poco de un tiro salvaje , pero ¿te estás moviendo de https a http? P.ej. el formulario de inicio de sesión es https, la siguiente página es http

Si es así, la mayoría de los navegadores abandonarán las cookies de sesión.

Gracias, Fran

+0

no usando https, esto no aplica. gracias. –

Cuestiones relacionadas