2010-08-19 12 views
8

Supongamos que he iniciado sesión en una aplicación que se ejecuta desde IIS. Ahora no he cerrado la sesión, pero cerré el navegador. Y cuando vuelvo a acceder a la aplicación, se establece de forma predeterminada en la página de inicio de sesión. ¿Cómo reconoce IIS que se trata de una nueva solicitud y redirige al usuario a la página de inicio de sesión?¿Cómo reconoce IIS las diferentes sesiones en .NET?

Tengo otra pregunta. Supongamos que si no cierro el navegador, que utilicé cuando inicié sesión. Abrí el nuevo navegador para solicitar una página desde la misma aplicación. IIS reconoce que se trata de una nueva solicitud a la aplicación y redirige al usuario a la página de inicio de sesión. ¿Por qué no utiliza la sesión existente o las cookies que utiliza el primer navegador?

Por favor, no se irrite con mis preguntas continuas ... Estoy teniendo una gran confusión. Decimos HTTP es un protocolo sin estado. Una vez que se solicita la página, he iniciado sesión. Y la conexión del protocolo HTTP finalizará entre IIS y el navegador, ¿verdad? Luego estoy navegando hacia otras páginas en esa aplicación registrada. Ahora IIS reconoce que el usuario ha iniciado sesión en este navegador. Pero cuando abro un nuevo navegador y solicito esa aplicación, ¿cómo IIS reconoce que se trata de una nueva solicitud? Como el protocolo HTTP está desconectado, ¿cómo funciona en el primer caso?

+0

Ok. También tengo otra duda. Supongamos que IAM no cierra el navegador en el que me he conectado. Y abro el nuevo navegador para solicitar la página desde la misma aplicación. Ahora, cómo iis reconoce que se trata de una nueva solicitud a la aplicación y la envía a la página de inicio de sesión. ¿Por qué no puede utilizar la sesión existente o las cookies que utiliza el primer navegador – Bala

+0

? Ver mi respuesta actualizada. – cHao

+0

Muchas gracias chao. Por favor, encontrar mi pregunta actualizada y ayudarme – Bala

Respuesta

29

Como usted ha dicho correctamente, HTTP sí mismo es sin estado, y cada solicitud es técnicamente independiente de todos los demás. Las sesiones, tal como se usan en los sitios web, son una solución para eso. Lo que sucede, normalmente, es que el servidor almacena la información que le interesa mantener entre las solicitudes (como el nombre de usuario y/o ID del usuario registrado, por ejemplo), y le asigna a esa información una ID (llamada "ID de sesión"). Luego le dice al navegador esa identificación de la sesión, de tal manera que el navegador puede devolver la identificación cuando llega el momento de hacer otra solicitud. Si el navegador desempeña su parte y proporciona el ID de sesión, entonces la información almacenada se puede recuperar, actualizar, etc. con cada solicitud, proporcionando cierto grado de estado, incluso sobre un protocolo sin estado.

Las sesiones se suelen implementar mediante cookies. Es decir, el servidor entrega al navegador una cookie con la ID de sesión, y el navegador devuelve la misma cookie con cada solicitud hasta que la cookie caduque o se olvide de otra manera. Algunas cookies (las llamadas "cookies de sesión") no se guardan y se olvidan cuando se cierra el navegador. Un navegador recién abierto no tiene ninguna cookie de sesión para pasar, por lo que si el servidor usa cookies de sesión para hacer sesiones (lo que debería hacer), considerará que el usuario aún no ha iniciado sesión y las enviará a la página de inicio de sesión si lo necesitan Inicie sesión.

Las cookies de sesión generalmente se compartirán entre pestañas en el mismo navegador, y algunas veces incluso serán compartidas por las ventanas abiertas por "Archivo> Nueva ventana" desde un navegador en ejecución, porque ambos casos serán típicamente solo sea parte de ese navegador. Pero si inicia el navegador desde el menú Inicio, o si su sistema operativo le permite iniciar un programa, se trata de un proceso completamente diferente, y las cookies de sesión rara vez se comparten entre los procesos.

El servidor también suele recordar sesiones en su extremo por tiempo limitado (desde segundos a años, según el servidor o la configuración del sitio) después de cada solicitud que utiliza la sesión. Si el navegador pasa una cookie que corresponde a una sesión que el servidor ya no recuerda, actuará como si no hubiera sesión. Lo cual, en los casos donde tiene que iniciar sesión, volverá a la página de inicio de sesión.

+0

Muchas gracias por ayudarme en el caos – Bala

1

Hay cookies que se pasan siempre sin importar si está conectado o no. Se asignan a sesión en IIS.

+0

Estoy de acuerdo, pero ¿cómo IIS sabe que el navegador está cerrado y es una nueva solicitud cuando volvemos a solicitar esa página – Bala

+3

@Bala: IIS no conoce un navegador. Es el navegador que olvidó la cookie de sesión temporal cuando se cerró (como debería ser) y, por lo tanto, no puede enviarla a IIS desde la nueva instancia. sin cookie = sin sesión. –

+0

Muchas gracias Hans – Bala

Cuestiones relacionadas