2011-07-06 15 views
21

tengo código de autenticación:¿Cuándo se establece HttpContext.User.Identity?

var authTicket = new FormsAuthenticationTicket(/*blahblah....*/); 
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, 
          FormsAuthentication.Encrypt(authTicket)); 
Response.Cookies.Add(cookie); 
var name = HttpContext.User.Identity.Name; // line 4 

Al poner en sentencias de depuración, me parece que name en la línea 4 está vacía. Pero la próxima vez que haga una llamada en esta sesión del navegador, el HttpContext.User.Identity.Name está configurado correctamente.

¿Cuándo se establece este valor?

+0

preguntándote por qué crearías manualmente la cookie y la agregarías a la respuesta en lugar de solo llamar a: FormsAuthentication.SetAuthCookie()? –

+0

¿También se pregunta por qué necesitaría obtener el nombre de usuario de HttpContext si está a punto de establecer una cookie de autenticación? Seguramente, si está a punto de establecer una cookie de autenticación, está diciendo que desea configurar a esta persona como "iniciada sesión", ¿cómo puede hacerlo si aún no conoce su nombre de usuario? –

+1

@Nick: la razón es porque esta es la última de una serie de desarrollos, que puede seguir desde aquí: http://stackoverflow.com/q/6586156/7850 –

Respuesta

18

se establecerá el HttpContext.User.Identity.Name si la Solicitud dada contiene la cookie de autenticación. En su caso, la cookie acaba de agregarse a la Respuesta para que el navegador la recoja. El navegador agregará la cookie en las siguientes solicitudes, si existe.

+0

Ahora eso es lo que habría pensado. Excepto que estoy experimentando un comportamiento que no se ajusta a lo que describes. Vea aquí: http://stackoverflow.com/q/6586156/7850 –

+0

Wow, hombre. Ese parece ser un problema verdaderamente desconcertante que tienes allí, pero como he deducido de la conversación, la cookie se envía con la respuesta después del inicio de sesión, también dentro del cliente aéreo. Trataré de ver si puedo ayudar con tu problema inicial. – tehshin

+0

es la cookie de autenticación configurada tanto en autenticación de formularios como en autenticación de Windows, o simplemente autenticación de formularios? – MacGyver

2

Desde su código parece que tampoco tendría que llamar:

FormsAuthentication.Authenticate(name, password) 

o, si se utiliza la siguiente membresía:

Membership.ValidateUser(name, password) 
+0

Gracias, pero eso no es lo que estoy pidiendo. .. –

Cuestiones relacionadas