La implementación personalizada de IMembershipService
es un camino a seguir si no desea utilizar el módulo predeterminado Orchard.Users. Útil cuando aún desea hacer autenticación de formularios, pero simplemente almacene los datos de autenticación en otro lugar, no en UserPart.
Si desea crear un esquema de autenticación totalmente personalizado, que anule el predeterminado por formulario (nombre de usuario + contraseña), anule IAuthenticationService
.
Por lo tanto, en términos generales:
IMembershipProvider
se trata de la gestión de datos de autenticación (crear/recuperar usuarios)
IAuthenticationProvider
se trata de llevar a cabo la autenticación (firmar de entrada/salida/get actual de usuario, etc.)
Dependiendo de sus necesidades, puede anular cualquiera de los dos o ambos.
Los módulos de autenticación comunes, como OpenAuth one, agregan opciones de autenticación adicionales a la predeterminada existente sin reemplazarla realmente, IIRC.
Si implementa IMembershipService usando un almacén de datos separado, ¿de dónde viene la propiedad ContentItem para el IUser devuelto? – Oll
Hmmm, buena pregunta en realidad. El 'IUser' debe ser un elemento de contenido, por lo que complica un poco las cosas, pero solo un poco. Puede crear un único elemento de contenido ("Usuario", por ejemplo) sin partes y ponerlo como un valor de la propiedad 'ContentItem' para cada' IUser'. Si adjuntar otras partes al usuario no es necesario en su escenario, esto funcionará perfectamente. –
También podría, por ejemplo. ponga el elemento de contenido del sitio actual allí, para que no tenga que crear nada. El sitio actual es accesible a través de 'IOrchardServices.WorkContext.CurrentSite'. –