2008-11-19 22 views
6

Tengo dos aplicaciones ASP.NET que residen en dos carpetas diferentes en mi servidor:aplicaciones independientes que comparten el mismo ASP.Net cookie de sesión

  • /Foo < - esta es la insegura para aplicaciones estándar
  • /Secure < - esta es una aplicación independiente que requiere SSL por IIS

el problema es que, por defecto, la cookie ASP.NET_SessionId se especifica en el dominio y se comparte entre las dos aplicaciones en diferentes directorios. Necesito que la cookie de sesión sea diferente porque no puedo permitir que se use una cookie secuestrada en /Foo para otorgar acceso a la aplicación /Secure.

Idealmente, me gustaría que las cookies de cada aplicación estén limitadas por la propiedad de cookie Path. Aparentemente no hay forma de hacer esto en .Net desde el primer momento.

Como un dolor de cabeza añadido, incluso si escribo código personalizado para establecer la ruta de cookies, Temo que algunos navegadores son mayúsculas y minúsculas y no usarán la misma cookie de sesión para /Foo y /foo, que, dependiendo de cómo los enlaces están construidos, pueden dar como resultado múltiples sesiones en la misma aplicación.

¿Alguien ha encontrado y solucionado este problema?

Respuesta

9

En .Net 2.0 y superior, puede establecer el atributo "cookieName" del elemento XML "sessionState" en su web.config a diferentes valores para cada una de sus aplicaciones. Eso evitará que usen la misma ID de sesión.

Here's the MSDN reference for this.

+0

nuevo enlace http://msdn.microsoft.com/en- us/library/h6bb9cz9 (v = vs.80) .aspx – Palani

0

Parece que están solo en directorios virtuales separados, pero todavía están en el mismo grupo de aplicaciones. Si realmente desea que las aplicaciones estén separadas, intente crear otro grupo de aplicaciones para su aplicación/secure.

0

Compruebe el icono de su carpeta /Secure en IIS.

Si tiene un icono de engranaje, entonces es una aplicación separada y las sesiones deben ser diferentes y la aplicación se ejecutará en su propio dominio de aplicación.

Si se trata de un icono de globo, entonces es un directorio virtual y compartirá la misma sesión que el sitio raíz y /Foo.

1

si utiliza la autenticación de formularios, entonces también es necesario cambiar la cookie formas en web.config:

<forms name="Foo"... 
<forms name="Secure"... 
Cuestiones relacionadas