2011-01-03 19 views
15

Deseo utilizar la autenticación en mi sitio para iniciar sesión en la sección Admin. Ya tengo mi esquema de base de datos, no quiero usar las tablas de membresía de ASP.NET para SQL Server. Tengo tres tablas: Empleados, Roles y Empleados en Roles.Autenticación de formularios personalizados en MVC

Realmente me gustaría mantener esto lo más simple posible, pero estoy teniendo problemas para encontrar una solución. Solo quiero usar la autenticación de formularios con mis tablas para que los empleados puedan iniciar sesión, cerrar sesión, cambiar su contraseña, etc.

Si alguien me puede dirigir a una entrada de blog o tutorial sobre esto, sería genial.

+0

No sabe cómo proteger los datos es necesario que haya , o el factor de riesgo, pero suponiendo que vale la pena protegerlo o no te molestarías ... Asegúrate de seguir las pautas de OWASP. La mayoría de los desarrolladores no deberían implementar su propia seguridad cuando una API existente que fue desarrollada y probada por expertos está fácilmente disponible, pero si insistes, al menos sigue las pautas. http://www.owasp.org/index.php/Authentication_Cheat_Sheet – David

+7

@David: Tengo que estar en desacuerdo: la fuente de la implementación integrada está disponible para derivación. Puede ser oneroso tener que usar las tablas integradas cuando ya tiene Tablas de usuario integradas en su modelo de datos. Microsoft basó el proveedor de Membresía en interfaces específicamente para que pueda extenderse. –

+0

Voy a modificar mi comentario anterior: el almacenamiento de contraseñas no es algo simple y se puede hacer fácilmente incorrectamente. Por lo tanto, extiéndase, pero asegúrese de comprender cómo cifrar los datos confidenciales en reposo en una base de datos. –

Respuesta

24

Steven, echa un vistazo a mi serie de tutoriales sobre seguridad del sitio web: http://www.asp.net/web-forms/overview/older-versions-security/introduction/security-basics-and-asp-net-support-cs

(EDIT: He actualizado la URL anterior como la dirección URL original se devuelve un 404. Pero, por favor, tenga en cuenta que este material fue escrito en 2008 y ahora está irremediablemente anticuado.)

Los tres primeros tutoriales se centran exclusivamente en la autenticación basada en formularios sin discutir la membresía. Estos tres primeros tutoriales, especialmente los tutoriales n. ° 2 y n. ° 3, le ayudarán a avanzar en la dirección correcta.

Para implementar roles sin utilizar el marco incorporado Roles ASP.NET, consulte este artículo: Role-Based Authorization With Forms Authentication.

Dicho todo esto, sugiero que reconsidere el uso de ASP.NET al horno en las bibliotecas de Membresía y Roles. Evitarlos significa que tendrás que reinventar la rueda, y probablemente lo hagas mal. (Por ejemplo, ¿está almacenando contraseñas de usuario de forma segura en su implementación personalizada?)

Happy Programming!

+0

+1 - rodar el tuyo usualmente es una mala idea, ¡y estoy totalmente de acuerdo contigo en esto! – David

+1

Eso funciona, hasta que tenga que trabajar con un almacén de datos que no sea de SQL Server. –

+0

@EdDeGagne, puede crear un proveedor de membresía personalizado para tratar con un almacén de datos alternativo. De hecho, alguien ya puede haberlo hecho. Por ejemplo, aquí hay un proveedor de membresía personalizado para MySQL - http: //www.codeproject.com/Articles/12301/Membership-and-Role-providers-for-MySQL –

4

El proveedor de membresía incorporado se basa en interfaces que pueden reemplazar su implementación por la suya, que (entre otras cosas) puede usar sus propias tablas para la autenticación.

Aquí está un vídeo sobre la creación de un proveedor de pertenencia ASP.NET personalizada: http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

He aquí un buen artículo general con punteros a otros recursos:
http://weblogs.asp.net/scottgu/archive/2006/02/24/ASP.NET-2.0-Membership_2C00_-Roles_2C00_-Forms-Authentication_2C00_-and-Security-Resources-.aspx

Cuestiones relacionadas