tag route net for data asp all asp.net asp.net-membership membership-provider custom-membershipprovider

asp.net - route - Proveedor de membresía de Microsoft Vs Proveedor personalizado Vs Sistema de inicio de sesión personalizado completo



select asp-for asp-items (4)

Actualmente estoy convirtiendo un sitio ASP clásico muy antiguo, pero en funcionamiento, a ASP.Net.

Cuenta con un sistema de gestión de usuarios escrito completamente personalizado. Si bien funciona bien, realmente necesita una actualización, ya que quiero que sea más flexible para algunos proyectos futuros en las obras.

Cuando le pregunté a alguien acerca de esto, dijeron "Necesitas usar el Proveedor de Microsoft" y dieron una conferencia sobre cómo Microsoft lanza todas estas cosas de forma gratuita y qué tan buenas son y deberían reutilizarse tanto como sea posible.

He investigado un poco al respecto (principalmente mirando los videos en http://asp.net/learn ) y estoy muy impresionado con algunas de las características, ya que parece haber componentes de arrastrar y soltar para los elementos que llevaría Me envejece para escribir.

Sin embargo, la base de datos de membresía actual es complicada de explicar, es una base de datos escrita completamente personalizada que tiene muchas relaciones internas ... Realmente no es "compatible" con el proveedor predeterminado de Microsoft.

He echado un vistazo a ¿Cómo puedo: Crear un proveedor de membresía personalizado? , pero me siento un poco fuera de mi zona de comodidad y me preocupa que sea lento, introduzca un agujero de seguridad o simplemente no funcione.

Al final del día, el Proveedor de membresía de Microsoft debería funcionar para mí; las únicas personalizaciones que realmente necesito es el inicio de sesión para usar el campo de nombre de usuario / contraseña en mi base de datos y la secuencia de comandos de creación de usuario que tiene muchos códigos personalizados a varios terceros sistemas de partidos (necesidad de prestación de servicios, etc.).

Me preguntaba, ¿qué harías si te enfrentas a una situación similar?

  1. Use el proveedor de membresía de Microsoft y de alguna manera haga que funcione para usted (aunque me gustaría recibir sugerencias)

  2. Use el proveedor de membresía de Microsoft pero use un proveedor personalizado que se personalice en torno a su código.

  3. ¿Usa su propia solución totalmente personalizada?


Ese video complica las cosas :) Si va a implementar un proveedor personalizado, entonces el reflector sobre el existente es un buen lugar para comenzar :)

Por supuesto, como una opción rápida y sucia, podría piratear los procedimientos almacenados que utiliza el proveedor de Membresía de SQL, pero el código personalizado para aprovisionar servicios probablemente lo extienda.

Si lo piensa, el aprovisionamiento remoto de servicios no pertenece realmente a un proveedor de membresía, no es realmente una función de membresía, toda la membresía sí proporciona nombres de usuario y contraseñas y la autenticación a su alrededor. Mi opinión es que debe mover el aprovisionamiento de servicios fuera de allí y realizarlo en el sitio ASP.NET después de que se haya creado un usuario, incluso si eso es solo llamar a un procedimiento almacenado una vez que el proveedor de membresía ha hecho lo suyo. Si hace esto, puede encontrar que el proveedor de membresía de SQL hará todo lo que necesita (probablemente también con los proveedores de roles y perfiles), ¡y por lo tanto tiene mucho menos código para escribir!


He estado en situaciones similares en el pasado. En ambos casos, creamos implementaciones personalizadas de los proveedores (MembershipProvider, RoleProvider, ProfileProvider) en torno al mecanismo existente.

En ambos casos, solo usamos las implementaciones del proveedor para el acceso de solo lectura, por ejemplo, para darnos los gubbins de fácil validación en web.config y similares. El código de administración de usuarios se dejó solo, ya que funcionó bien.


Si el proveedor existente funciona (tiene los campos correctos para sus datos), úselo para comenzar. Puede MUY fácilmente reemplazarlo con un proveedor del cliente más tarde (solo un cambio en el valor de configuración).

Tenga en cuenta que no hay una interfaz de administración ASP.NET "fuera de la caja" para eso, tendrá que usar la suya o usar una de terceros.


Utilice mi MembershipProvider especializado para trabajar en mis propias tablas de base de datos.