2012-04-16 17 views
5

¿Cuál es la forma preferida de integrar un proveedor de membresía personalizado con Orchard?Membresía personalizada de Orchard CMS

he visto un par de postes alrededor implementación de un nuevo IMembershipService y IUserService (de Orchard.Users) y luego hay otros módulos como OpenAuthentication que parecen hacer un montón más que eso (pero sigue utilizando el UserPart? ?).

Ya tenemos un proveedor de Membresía ASP.NET escrito, ¿se puede integrar tal cual?

Respuesta

7

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.

+3

Si implementa IMembershipService usando un almacén de datos separado, ¿de dónde viene la propiedad ContentItem para el IUser devuelto? – Oll

+0

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. –

+0

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'. –

Cuestiones relacionadas