2009-03-29 16 views

Respuesta

6

Conseguir un sistema de autenticación correcta es difícil, porque es muy fácil de construir algo que sólo aparece a trabajar. No querrá encontrarse en una situación en la que un año después del despliegue descubra finalmente que su sistema se había descifrado seis meses antes.

La construcción de su sistema utilizando el modelo MembershipProvider le ayuda a hacerlo bien al proporcionarle un esqueleto que se presta para ser implementado correctamente. Solo necesita completar con precisión un conjunto de métodos, y puede confiar en la arquitectura de alto nivel proporcionada para asegurarse de estar utilizando los métodos correctos en los lugares correctos.

Obtener implementaciones de métodos individuales realizadas right es comparativamente fácil. Puede ponerlos en su prueba de unidad y tener la confianza de que hacen lo que se supone que deben hacer.

Dicho de otra manera, no tiene que preocuparse si comprueba su token de autenticación en los lugares correctos. Las partes de ASP.Net que llaman al proveedor de membresía saben cuándo hacerlo. Todo lo que tiene que hacer es implementar correctamente el cheque, y eso normalmente se reduce a una simple comparación.

Además, puede que no tenga que empezar desde cero. Tiene que optar por heredar de un proveedor existente y solo agregar la funcionalidad que desea que aún no proporciona.

+0

Sí, pero ¿no es el detalle de obtener un sistema de autenticación en el código que tengo que suministrar para los métodos? Lo entiendo completamente, por ej. la ventaja de _utilizar _ el Proveedor de Membresía Sql existente, pero si necesito, p. un Access, todavía necesito codificarlo _all_ myself. – ProfK

+0

No necesita codificarlo todo usted mismo: hay código en ASP.Net que llama a un proveedor en el que puede confiar que es correcto, y puede heredar/extender y proveedor existente. Actualizado mi respuesta para explicar. –

+0

@Joel, gracias. Probablemente tenga que analizar un poco más la imagen más grande, y ver dónde y cómo se usará mi proveedor, porque si son solo mis formularios los que lo llaman explícitamente, esencialmente tengo que empezar desde cero porque casi todos los métodos de la clase base son abstractos. y vacio – ProfK

0

Bueno, depende ... Lo encontré muy útil porque tuve que agregar el concepto de funciones, por lo que cada función tenía funciones asociadas a ellas, y así sucesivamente.

En ese caso, he implementado mis propias clases de miembros y RoleProvider que contenían el método AddFunctionToRole ... método IsFunctionAssignedToUser ... etc etc

Un poco más de información sobre ese here

1

La principal ventaja de la escritura su propia clase MembershipProvider es que es considerada por ASP.NET como un componente de primera clase y puede usar las interfaces estándar para autenticación y autorización y solo tiene que cambiar el archivo de configuración más adelante si desea utilizar un proveedor diferente.

2

Si solo necesita algo "pequeño" diferente de uno de los proveedores de membresía predeterminados, entonces probablemente debería considerar heredar de uno de los proveedores incorporados o uno de los mejores proveedores de terceros y ampliarlo con el adicional funcionalidad que necesita o anula la funcionalidad que desea cambiar.

1

Técnicamente, debería ganar cierto nivel de portabilidad: al usar el modelo existente, debería poder colocar su proveedor en otras aplicaciones web, para reemplazar su sistema de membresía con muy poco esfuerzo.

Desafortunadamente, la cantidad de terceros que parecen haber seguido su propio camino en lo que se refiere a membresía/perfiles es bastante impresionante, y también bastante deprimente, especialmente cuando se esfuerza al escribir algo basado en eso.

Dicho esto, utilizando el modelo de proveedor de membresía, todos los demás controles que usan membresía "simplemente funcionan" (es decir, Login, LoginStatus, LoginName, etc.) sin tener que escribir versiones personalizadas de ellos también.

Cuestiones relacionadas