2010-04-14 17 views
6

Por ejemplo: si estoy recuperando User.Identity.Name, ¿proviene de la cookie .ASPXAUTH o se recupera de la base de datos utilizando mi proveedor de membresía?¿De dónde provienen los datos de User.Identity?

¿Se realizan solicitudes de bases de datos cuando accedo a User.Identity?

Gracias.


EDIT: En este momento estoy bastante seguro de que proviene de una galleta de vale de autenticación, pero no puedo encontrar ninguna documentación oficial para confirmar esto. ¿Nadie?

Respuesta

1

Esto debe responder a su pregunta ...

"El vale de autenticación de formularios no sólo incluye la identidad del usuario, sino que también contiene información para ayudar a garantizar la integridad y la seguridad de la ficha ". Extraído del artículo de Microsoft:

http://www.asp.net/security/tutorials/forms-authentication-configuration-and-advanced-topics-vb

Además de esa explicación, la observación del comportamiento ASP.NET también apoya la conclusión de que el nombre de usuario es, de hecho, se almacena en la cookie ASPXAUTH: ASP.NET no hace acceda a la base de datos en solicitudes de página posteriores después de que el usuario haya sido autenticado. Puede probarlo usted mismo, tal como lo hice, ejecutando SQL Profiler para supervisar la base de datos tal como la utiliza una aplicación ASP.NET.

También sepa que los datos de nombre de usuario y de autenticación NO se almacenan en estado de sesión. Además de plantear problemas de seguridad, ese tipo de implementación causaría que la membresía de ASP.NET se rompa cuando el estado de la sesión se desactive. Aquí es otra respuesta de desbordamiento de pila que indica que la autenticación de formularios (miembro) de datos y el estado de sesión no tienen nada que ver entre sí:

Does FormsAuthentication.SetAuthCookie() make a session based cookie?

esa respuesta también enlaza a un artículo de MSDN, here, que explica la cookie ASPXAUTH en detalle, aunque el artículo al que hice referencia arriba parece ser más actual.

0

.ASPXAUTH cookie/User.Identity proviene de la autenticación (Windows, Formularios).

Si usted está tratando de conseguir que el usuario de adhesión es necesario utilizar

Membership.GetUser() 

o

Membership.GetUser(User.Identity.Name) 

documentation here lo que resultaría en una llamada DB.

+0

Entiendo que proviene de la autenticación. Sin embargo, cuando llamo User.Identity.Name, ¿de dónde se recupera el valor? ¿Cookies o db o sesión? – niaher

+0

Las cookies solo existen después de autenticarse ... entonces ... todo depende de su esquema de autenticación – Nix

1

Creo que la información de autenticación es específica de una sesión y se mantiene dentro del proceso ASP.net o fuera, o incluso del servidor SQL. Una vez que se autentica a un usuario, se genera un token de sesión, el token se usa para rastrear la información del usuario autenticado en el servicio estatal. En solicitudes posteriores, el token de la sesión se usa para recuperar la identidad del usuario y es allí donde obtenemos objetos precompilados como User.Identity.Name. esto se debe implementar en el módulo de Autenticación de formularios o en el módulo de autenticación de Windows, según el tipo de autenticación que se utilice. Si configura el modo de autenticación sin cookies, el token de sesión se muestra dentro de la URL. Una vez que la sesión expira, toda la información perteneciente a la sesión se elimina del servicio estatal.

Espero que esto lo aclare!

+0

Aunque es una respuesta aceptada, realmente no responde mi pregunta. – niaher

+0

¿Entonces por qué lo aceptaste? – IsmailS

+0

Me vi obligado a hacerlo porque la pregunta era sobre la recompensa. – niaher

1

Depende del tipo de sesión que esté utilizando. Las sesiones se pueden modificar utilizando dos parámetros 1. Uso de cookies-Sin cookies, o use cookie 2. Proceso para almacenar la información del estado de la sesión -Inproc (en proceso), outproc (servicio de estado ASP.net) o servidor Sql.

Si utiliza el servidor Sql para almacenar la información de estado, seguramente se realizará una consulta en la base de datos para recuperar los datos de la sesión. Más detalles aquí-

http://www.codeproject.com/KB/aspnet/ExploringSession.aspx

Cuestiones relacionadas