SimpleMembership de MVC4: uso y adaptación a tablas propias

Mientras realizaba la migración de asp.net mvc 2 a mvc4 descubrí que una de las adaptaciones realizadas en el cambio de MVC3 a MVC4 es que se han incluído una serie de mejoras y facilidades al MembershipService que se usaba en la versión 2 renombrándolo como SimpleMembership, y desde luego que se vuelve realmente simple su uso y adaptación. En este pequeño artículo vamos a ver como aplicarlo a una tabla que ya tengamos y añadir algunos datos para que nos los rellene en esta tabla.

Con la introducción de MVC4 el equipo de asp.net buscaba adaptar el MembershipService a un formato más simple y más adaptable, cuando creamos un nuevo proyecto MVC4 tenemos en la carpeta “Filters” el archivo InitializeSimpleMembershipAttribute.cs que contiene la clase que inicializa el SimpleMembership (SimpleMembershipInitializer) y que configura este para que apunte a la table y a los campos idusuario y usuario que se usarán por defecto tal que así:

Esta porción de código mapea en la conexión que le indiquemos (en este caso usa DefaultConnection del archvio web.config) la tabla en la que se gestionarán los usuarios (UserProfile) y los campos que gestionarán el id de usuario (UserId) y el campo que albergará el nombre de usuario (UserName). A mayores de todo esto incluye que si la tabla no existiese esta se creará.

Si queremos usar nuestra propia tabla para la gestión de los usuarios, sólo necesitaremos que nuestra tabla incluya un campo para el id de usuario y otra para el nombre de usuario, podríamos usar por ejemplo como campo de nombre usuario el correo de registro, y así el login se produciría con el correo de registro. En mi caso ya tenía una base de datos que usaba para ejemplos y demos, así que reutilicé esta tabla:

users

En esta tabla los campos que quiero que utilice SimpleMembership son “IdUsuarios” como id y “Usuarios” para el nombre del usuario, así que cambio la cadena anterior por esta:

De este modo SimpleMembership al realizar la llamada a WebSecurity.CreateUserAndAccount para crear la cuenta de usuario lo realizará sobre la tabla que yo he asignado en vez de sobre la que tiene configurada por defecto. La utilidad de usar SimpleMembership sobre la de generar nuestra propia gestión de usuarios es que él ya se ocupa de gestionar y encriptar las contraseñas, de manera simple proporciona también una forma de realizar una validación del registro mediante el envío de un mail de confirmación que intentaré mostrar en el futuro y además nos permite modificar la creación de la cuenta dándole un objeto con los valores a rellenar de nuestra tabla. Un ejemplo sería si quisiéramos rellenar el correo en la tabla que mostramos con anterioridad, sería suficiente con adaptar la línea de CreateUserAndAccount de la siguiente manera:

Así al mismo tiempo que se crea la cuenta de usuario se rellena el campo correo con los datos del registro, de la misma manera podemos rellenar todos aquellos datos que necesitemos que sean persistentes en el mismo, o aquellos datos que queramos inicializar en el registro o guardar tras este como la fecha de registro.

Para profundizar más en el tema recomiendo el artítulo de Matthew M. Osborn (@osbornm) que habla acerca de las novedades que se introdujeron en MVC4 y como utilizar algunas de ellas.

Espero que este artículo os ayude en vuestros desarrollos y si es así que comentéis vuestras casuísticas.

Comments are closed here.