IPrincipal
es el contexto de seguridad que se crea para cada solicitud web y contiene información relacionada con la identidad del usuario y los roles que tienen.
un IPrincipal
contiene un IIdentity
que tiene un Name
, un IsAuthenticated
y AuthenticationType
propiedades.
es una clase que se deriva de la clase abstracta MembershipProvider
para proporcionar datos personalizados sobre los usuarios que usan su aplicación. El proveedor operará en los tipos MembershipUser
y se puede utilizar para obtener datos para un usuario o usuarios en particular, crear nuevos usuarios, etc. Puede heredar de MembershipUser
para crear su propio tipo de usuario y, por lo general, puede querer hacer esto cuando también usa su propio proveedor.
Al acceder a una aplicación, un IPrincipal
y IIdentity
se crean y asignan a HttpContext.Current.User
y Thread.CurrentPrincipal
para proporcionar información de seguridad para cualquier acción que pueda ser tomada durante el tiempo de vida de la solicitud.
Si está utilizando un RoleProvider
, se crea una instancia de tipo RolePrincipal
que se engancha en el RoleProvider
configurado para obtener roles para el usuario; si no está utilizando un RoleProvider
, se creará una instancia de tipo GenericPrincipal
.
Si está utilizando la autenticación de formularios y un usuario ha iniciado sesión, se creará una instancia de tipo FormsIdentity
; si un usuario no está autenticado, se crea una instancia de tipo GenericIdentity
. El IIdentity
que se crea es lo que finalmente se serializará en la cookie de autenticación que se devuelve al navegador y lo que se usará para construir el FormsAuthenticationTicket
y el IIdentity
en la próxima solicitud.
El MembershipProvider
se adapta a esto proporcionando más información sobre el usuario. el método Membership
estático de la clase GetUser()
utilizará el IIdentity.Name
actual y el MembershipProvider
configurado para devolver una instancia de MembershipUser
(o clase derivada si ha definido uno) que contiene los datos sobre el usuario.
Dado que ASP.NET MVC está construido sobre la tubería de procesamiento de ASP.NET, el lugar donde desea establecer su propio IIdentity
y IPrincipal
es el mismo. Hasta donde yo sé, no hay mejor lugar en la arquitectura MVC para configurarlos.
Nota: esto es todo de la memoria.Si tengo algo mal, por favor avíseme y lo actualizaré.
Esto es exactamente lo que necesitaba. ¡Gracias! – Joe
Tenga en cuenta que en MVC 5, Microsoft se alejó de MembershipProvider a favor de ASP.net Identity. – Brian