5

Internet Explorer no guarda mi cookie de autenticación después de redirigir una página.La cookie de autenticación de ASP.NET desaparece, solo en IE, solo desde ubicaciones específicas

Aquí está la situación:

Tengo una aplicación Web ASP.NET 2.0 que se ejecuta en un hosting compartido iis7. La aplicación usa la autenticación de formularios para manejar el inicio de sesión y la identidad del usuario y escribir una cookie (.ASPXFORMSAUTH) en la máquina del cliente para tal fin.

en IE (comprobado con la versión 8, 9), desde algunas ubicaciones, la cookie de autenticación no se guarda después de la primera página. El comportamiento observado es: nombre

  1. de usuario y la contraseña se envían en la forma de la conexión
  2. usuario es redirigido succesfuly a la primera entrada después de la página (y el violinista muestra que existe la cookie .ASPXFORMSAUTH)
  3. Después haciendo clic en otro enlace o pulsando F5 para actualizar, se acusa al usuario para iniciar sesión y la cookie de autenticación (según el violín) ya no existe. en la actualización/clic, la cookie de autenticación falta en los encabezados de solicitud.

Esto no ocurre en Chrome/FF, e incluso en IE, parece depender de la ubicación desde la que estoy conectado.

también, localmente (usando el servidor de desarrollo interno en VS2008), todo funciona bien y también se refleja bien en el violín.

Me estoy golpeando la cabeza por unos días. Pensó que podría ser algún tipo de problema de firewall extraño, pero no pudo determinar nada concluyente.

Las ideas serán apreciadas.

+0

Compruebe para asegurarse de que cuando la cookie se crea, el dominio y la ruta con la que se crea son válidos para las otras partes de la aplicación que intentan usarlo. Además, asegúrese de que la configuración auth web.config de sus formularios sea correcta al respecto. Compruebe [esta página] [1], especialmente los atributos de ruta y dominio. [1]: http://msdn.microsoft.com/en-us/library/1d3t3c61.aspx – HackedByChinese

+0

¿Alguna vez ha realizado algún progreso en esto? Tengo un problema muy similar ahora –

+0

Me temo que no. El problema aún existe. No tuve suficiente tiempo para atenderlo en los últimos días, volveré a hacerlo en el futuro cercano. Por favor, actualice si hace algún avance. –

Respuesta

0

1.try para crear una cookie persistente

2.check la configuración de cookies de IE

+0

1. intenté, y también intenté establecer el tiempo de expiración para que fuera extralargo, sin cambios. 2. La configuración de IE se redujo al mínimo y las cookies funcionan bien en otros sitios. Además, el mismo navegador en la misma máquina se comporta de manera diferente en diferentes momentos. –

9

IE adolece de un error raro - por algunas razones, si hay caracteres no alfanuméricos en el nombre del dominio , IE no persistirá en las cookies ... y por lo tanto no tendrá sesiones persistentes entre diferentes llamadas.

Compruebe si su dominio tiene caracteres no alfanuméricos, como test_domain o test-domain o los me gusta. Lamentablemente, no conozco ninguna solución para este corto de aliasing el dominio incriminado o acceder a él directamente a través de la IP. La razón por la que no tienes problemas localmente es porque estás apuntando a http://localhost, lo cual está bien. Tan pronto como implemente en un dominio que no sea compatible con IE, será testigo del problema.

Me sucedió y me llevó horas descubrir por qué. Espero que esto ayude. Otra razón para matar IE con fuego.

+0

Gracias (y una disculpa por la respuesta tardía). Mi dominio contiene números, pero no hay caracteres especiales. En cualquier caso, profundizaré en el asunto una vez que lo menciones. –

0

Compruebe la fecha del servidor. Tuve una situación en la que el servidor estaba 1 día atrás del navegador y, por lo tanto, la cookie de autenticación esencialmente expiró inmediatamente. Esto afectó a IE, pero no a FF.

1

Mi solución ha sido una combinación de otras soluciones:

  1. IE not saving asp.net authentication token/cookies
  2. http://connect.microsoft.com/VisualStudio/feedback/details/662275/asp-net-user-agent-sniffing-and-ie10-internet-explorer-10
  3. actualización a .NET 4.0 añadiendo el ticketCompatibilityMode tag = "Framework40" en el web.xml: http://msdn.microsoft.com/en-us/library/1d3t3c61.aspx

Tenga en cuenta que la verdadera solución final fue la 3ra.

Por último, pero no menos importante: una vez que establecer este indicador por encima de que tenía que cambiar el método de cierre de sesión en el código detrás, porque el viejo no cerrar la sesión de los otros:

protected void LoginStatusLink_LoggedOut(object sender, EventArgs e) { 
    // remove the authenticatation cookies from the browser 
    FormsAuthentication.SignOut(); 

    // force a new 'expired' auth cookie 
    HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName); 
    cookie.Expires = DateTime.Now.AddMonths(-1); 
    Response.Cookies.Add(cookie); 

    // delete roles cookie 
    Roles.DeleteCookie(); 

    // clear and abandon session 
    Session.Clear(); 
    Session.Abandon(); 

    // this line just to leave (forget) the current page 
    this.Response.Redirect("~/"); 
} 
Cuestiones relacionadas