2010-02-02 5 views
8

¿Cuáles son las diferencias (entre bastidores) entre Page.User.Identity y Request.LogonUserIdentity? No las diferencias en tipo, nombre, etc., sino las diferencias en cómo se implementan detrás de escena (es decir, uno llama a Windows xxx api y el otro llama a asp.net xxx api ...).Diferencias entre Page.Identity del usuario frente a Request.LogonUserIdentity

+0

Parece que respondió su propia pregunta. ¿Hay algo específico que estás buscando? LogonUserIdentity devuelve el objeto WindowsIdentity para el usuario que ha iniciado sesión actualmente. – sarvesh

Respuesta

18

Depende del mecanismo que esté utilizando para autenticar a los usuarios y de la configuración que tenga para la suplantación.

Por ejemplo, en el servidor de desarrollo VS, mediante la autenticación de formularios, el proveedor de pertenencia SQL estándar y el siguiente código:

// m_LoggedIn is a Literal control on the page: 
m_LoggedIn.Text = string.Format("<br />Page.User.Identity: {0} " + 
           "<br />Request.LogonUserIdentity: {1}", 
           Page.User.Identity.Name, 
           Request.LogonUserIdentity.Name); 

me sale el siguiente resultado:

Page.User. identidad: zhaph

Request.LogonUserIdentity: [nombreDeEquipo] \ Ben

La primera línea (Page.Usuario.Identidad) es la cuenta de autenticación de formularios con la que he iniciado sesión en el sitio, la segunda es la identidad de Windows con la que se ejecuta la solicitud, ya que no he habilitado la suplantación, este es mi inicio de sesión de Windows ya que es la cuenta con la que se ejecuta el servidor web.

En cuanto a las API, HttpRequest.LogonUserIdentity está llamando a la clase WindowsIdentity, que siempre representará una cuenta de usuario de Windows, mientras Page.User es la creación de un objeto que implementa IPrinciple, que permite representar un usuario que utiliza una serie de diferentes almacenes de respaldo, por ejemplo, la estructura de la base de datos SQL proporcionada por MembershipProvider.

Cuestiones relacionadas