Pregunta

Estamos golpeando una serie de paredes y buena escollos como creamos nuestra membresía personalizada basada en MembershipProvider, MembershipUser y RoleProvider etc.

Tenemos una serie de requisitos interesantes y proveedor de suscripciones no parece ser ayudarnos mucho en el logro de ellos:

  • Los usuarios pueden tener múltiples inicios de sesión.
  • Los usuarios no tienen un nombre de usuario directamente (pero pueden tener un inicio de sesión que tiene un nombre de usuario).
  • Los usuarios tienen una referencia única (actualmente un incremento automático clave primaria).

Para implementar esto, tenemos dos tablas:. Los usuarios que tiene una relación de uno a muchos con inicios de sesión

Esto significa efectivamente tenemos un Usuario que (en un mundo hipotético) se puede acceder a través de su cuenta de Active Directory de forma automática (cuando sea posible) y una a través de un nombre de usuario / contraseña combinación alternativamente o OpenID. También tendremos algunos usuarios que pueden no tener una cuenta AD.

Me había tratado inicialmente de nuevo propósito las clases de miembros mediante la creación de:  - CustomMembershipProvider  - CustomMembershipUser  - CustomRolesProvider

Pero toda mi lucha contra ella me acaba dado ojos negros y contusiones, realmente, realmente quiere un nombre de usuario!

¿Me he vuelto sobre ésta la mejor manera? ¿Debo estar empezando desde stratch y no heredar nada? ¿Debería estar lo base en la clase IProvider? O tal vez las clases GenericPrincipal y GenericIdentity? O estoy simplemente perdiendo algo con MembershipProvider?

Quiero mantener la experiencia de programación final tan fácil como lo es para las cosas de miembros fuera de la caja, por ejemplo.

Membership.GetCurrentUser();

y evitar una experiencia menos que-codificador extremo simplista ...

¿Fue útil?

Solución

he tenido experiencia similar y decidió darle todos los usuarios de una pertenencia común para la comprobación de papel, etc y asignarla a AuthenticationProviders differenct (OpenID, AD, los proveedores de pertenencia, etc.) para que puedan ser autenticados de forma diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top