2011-01-03 12 views

Respuesta

12

La información sobre el usuario que se está autenticando se almacena en el FormsAuthenticationTicket en una cookie, por defecto se llama .ASPXAUTH.

La información sobre la sesión de un usuario está separada de la información sobre la autenticación. El identificador de la sesión puede almacenarse en una cookie (una cookie diferente de la cookie de autenticación) o, como ha señalado Henk, en una sesión sin cookies, es decir, como parte de la URL.

El problema con el almacenamiento de información sobre la autenticación en la sesión de un usuario es que la sesión no está disponible hasta después del evento de autenticación (5 eventos más tarde IIRC) en el canal de procesamiento, en PostAcquireRequestState. ¡Esto significa que no tendrá acceso a los datos de autenticación en sesión hasta después de la autenticación!

Es posible almacenar datos en sesión y sobrescribir IIdentity y IPrincipal con esos datos, pero esto significa que la identidad del usuario tendrá algunos datos para los eventos antes de que la sesión esté disponible y datos diferentes para los eventos después de la sesión. disponible, que puede o no ser un problema. Además, es probable que desee proteger criptográficamente los datos en sesión de alguna manera.

Para responder a su pregunta sobre el título, la autenticación de formularios no requiere sesión; son entidades distintas requeridas para diferentes propósitos.

3

Por cómo se forma funciona la autenticación, se puede comprobar a cabo en los enlaces siguientes:

Formas funciona la autenticación en escenarios de servidores Web en el que el manejo de una solicitud de un servidor El usuario autenticado de formularios puede ser diferente del servidor que realmente autenticó al usuario y emitió el ticket de autenticación Forms y la cookie a menos que se configure la autenticación de formularios sin cookies. Para que esto funcione, según la sección Escenario de Web Farm del primer enlace:

Para solucionar este problema, los valores de validationKey y decryptionKey deben ser idénticos en todos los equipos del conjunto de servidores web. Para obtener más información sobre cómo configurar el elemento machineKey, consulte Cómo configurar MachineKey en ASP.NET 2.0.

que sugiere que la Autenticación de formularios no almacena nada en la sesión de ASP.NET. De lo contrario, también necesitaría establecer alguna forma de gestión de sesión fuera de proceso.

También tenía a mano una aplicación de Autenticación de Formularios de formularios y quería demostrarlo rápidamente. Después de autenticarme mediante la Autenticación de formularios y el aterrizaje en la página de inicio, reinicié el grupo de aplicaciones en el que se ejecutaba la aplicación de muestra, lo que debería matar a la sesión del usuario. Luego hice clic en uno de los enlaces que requieren autenticación en la página de inicio y pude ir a ese enlace sin ser redirigido a la página de inicio de sesión.

+0

+1 Gracias por hacer la prueba de concepto –

Cuestiones relacionadas