¿Necesito un proveedor de suscripciones personalizado para integrar la autenticación de terceros en ASP.NET?

StackOverflow https://stackoverflow.com/questions/994051

Pregunta

Tengo una aplicación ASP.NET MVC en el que acabo integrado el RPX sistema de identidad federada de terceros. La integración funciona bien, pero estoy teniendo algunas dificultades para envolver mi cabeza en torno a qué hacer con ella a nivel de ASP.NET.

Soy bastante nuevo en ASP.NET (estoy aprendiendo con MVC), y he aprendido un poco más sobre el modelo de proveedor de datos de afiliación y de perfil, y parece increíblemente compleja (pero igual de potente) . La acción específica Estoy luchando con la persistencia del usuario a la base de datos. He sido hasta ahora el uso de la aplicación SqlMembershipProvider norma, que ha trabajado bien. Sin embargo, ahora quiero hacer cosas como el almacenamiento y la comprobación de un código de verificación en la base de datos para la verificación de correo electrónico (en caso de que la dirección de correo electrónico del usuario aparece como no verificada por el resultado RPX), y la persistencia de los datos devueltos. Algo de esto es esencial para la autenticación, tales como la dirección de correo electrónico, mientras que parte de ella es simplemente la información del perfil (como la edad del usuario, género, etc.).

En la base de datos de ASP.NET, tengo un montón de otras tablas específicas de la aplicación, que me permita interactuar a través de NHibernate. Mi comprensión de la materia membresía / Perfil en ASP.NET es que maneja la persistencia, y por lo que no necesita hacer nada con NHibernate para conseguir este curso.

Mi objetivo es que la experiencia de inicio de sesión que sea similar a la de stackoverflow, pero con unos pocos bits adicionales (como la verificación de correo electrónico). ¿Es necesario construir un proveedor personalizado completo en el que estar haciendo esto, o puedo doblar la SqlMembershipProvider por defecto a mi voluntad de una manera efectiva?

[Por favor, véase también mi otra pregunta , en relación con las contraseñas en una aplicación de este tipo.]

¿Fue útil?

Solución

He hecho un trabajo similar en el pasado simplemente mediante la creación de una nueva clase de proveedor que hereda de SqlMembershipProvider, a continuación, sustituyendo los métodos que necesito.

Puede seguir llamando la implementación del método base para hacer la mayor parte del trabajo en primer lugar, a continuación, ejecutar cualquier lógica adicional que necesita en su clase derivada. La construcción de un proveedor a partir de cero es un montón de trabajo, y debe ser sólo el último recurso.

Puede añadir una nueva tabla a la base de datos con una referencia clave para aspnet_Membership - a continuación, añadir sus propios procedimientos almacenados que llama desde su proveedor de métodos derivados que hacer todo lo que necesita para esta nueva tabla. Esto es mejor que la adición de columnas en el esquema de afiliación, ya que mantiene sus cosas a medida desacoplada.

No obstante, deberá investigar la clase SqlMembershipProvider, en términos de lo que necesita para anular, pero creo que este enfoque funciona para usted, basado en lo que has descrito.

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