2009-08-26 10 views
10

Ok, estoy bastante confundido, ¿FormsAuthentication.SetAuthCookie() en asp.net crea una cookie basada en sesión o no? De lo que se reúnen para poner algo en una sesión que haría algo como esto en el código subyacente:¿FormsAuthentication.SetAuthCookie() crea una cookie basada en sesión?

Session["userAge"] = 25; 

Ahora, independientemente de si se crea una cookie que esto funcionará como su lado del servidor, así que estoy confundido en cuanto cuando leí, puede tener cookies de sesión y sin sesión, de ser así, ¿cómo crea cada una y cómo accedería a las variables de essión en la cookie en .net?

Respuesta

21

Esto es una confusión común. Session y FormsAuthentication son dos conceptos independientes: tienen tiempos de espera independientes y cookies independientes (o no cookies si usa sesiones sin cookies).

La sesión en el servidor se identifica mediante una cookie única creada incluso para usuarios anónimos. Esta cookie contiene un SessionID que no tiene nada que ver con FormsAuthentication.

La cookie FormsAuthentication contiene varias cosas, la más importante de las cuales es el ticket de autenticación. Este ticket es un bit de información cifrada que identifica al usuario contra las credenciales de inicio de sesión proporcionadas. Hay un gran diagrama de flujo paso a paso y una explicación de lo que hay en un ticket in this MSDN article.

+0

Eso explica mucho, pero la parte que no obtengo de ese artículo de MSDN es, ¿por qué la gente quiere decir cuando usan cookies basadas en sesiones y cookies sin sesión? La sesión es del lado del servidor, entonces, ¿dónde entra el cliente? –

+0

Puede acceder a la propiedad SessionID si lo desea, que está almacenada en la cookie de sesión (o en la cadena de consulta, si está utilizando sesiones sin cookies). Podrían estar hablando de una medida de seguridad que han implementado para vincular otras cookies o datos a un SessionID determinado. Puede ver más sobre SessionID aquí: http://msdn.microsoft.com/en-us/library/ms178581.aspx – womp

+0

gracias! tiene sentido –

2

No estoy seguro exactamente de lo que está preguntando, pero si su pregunta es cómo puede acceder al Session["userAge"] sin una cookie de autenticación, la respuesta es porque es una entidad separada de la sesión.

La cookie de autenticación (nombre predeterminado .ASPXAUTH) se crea antes de que la sesión se inicie, por lo que no se puede basar en la sesión.

Cuestiones relacionadas