Usando ASP.NET membrership en Winforms (2 / n)

Creando la base de datos de membresía

La base de datos de membrsía es el lugar en el que se van a almacenar los datos de los usuarios de nuestras aplicaciones. Si, de nuestras aplicaciones en plural, porque este sistema está preparado para gestionar datos de tantas aplicaciones como sea necesario. De modo que el primer paso va a ser crear esta base de datos en un servidor SQL Server. Por cierto, cualquier edición vale, desde la Express hasta la Professional.

Lo primero que vamos a hacer es ejecutar el comando aspnet_regsql desde la línea de comandos de Visual Studio, para iniciar el asistente que nos guiará en la creación de nuestra base de datos de membresía:

aspnet_regsql

Una vez iniciado, el aisitente pregunta si vamos a crear la base de datos o a eliminar la información de membresía de una base de datos ya existente. Una vez elegimos la primera opción nos pedirá el nombre del servidor de SQL y de la base de datos. En caso que no exista la base de datos se creará una. En nuestro caso elegiremos la instancia de SQL Server express local y (en un derroche de imaginación) llamaremos a nuestra base de datos ‘Test’:

createdbwizard1

Examinando la base de datos creada

testdb Una vez creada, nos conectaremos a la base de datos para examinar que objetos se ha creado. Lo primero que llama la atención es que hay una serie de tablas, vistas y procedimientos almacenados cuyo nombre empieza por el prefijo ‘aspnet_’, y yo me pregunto ¿no hubiese sido mucho más elegante utilizar un Schema en lugar de esta nomenclatura? Bueno, supongo que si se ha usado esta nomenclatura será por compatibilidad con SQL Server 2000, ya que los esquemas no aparecieron hasta la versión 2005.

La estructura de esta base de datos no es importante para nosotros, ya que en ningún caso vamos a acceder directamente a la base de datos. Todos nuestro trabajo se realizará a través del modelo de objetos de membresía desde nuestra aplicación .NET. De todos modos demos un vistazo a las tablas más interesantes:

aspnet_Applications: Es la tabla en la que se almacenan los datos de las distintas aplicaciones que van a usar esta base de datos. Sólo guarda el nombre y un identificador GUID para usarlo como clave en las tablas de usuarios, roles, etc.

aspnet_MemberShip: Guarda los datos de los usuarios del sistema de Membresía de forma conjunta con otra tabla llamada aspnet_Users. Así, los datos de cada usuario del sistema quedan divididos entre estas dos tablas, guardando la primera los datos relativos a la seguridad (contraseña, tipo de almacenamiento de la contraseña, pregunta y respuesta de seguridad) y en la segunda los datos propios del usuario (nombre, fecha de la última actividad).

aspnet_Roles: Almacena los datos relativos a los grupos de usuarios. Los grupos son usados para establecer los permisos de uno o varios usuarios. Posteriormente desde nuestra aplicación preguntaremos si un usuario pertenece a uno u otro rol para permitir o revocar permiso sobre ciertas acciones.

aspnet_UsersInRoles: Como su nombre indica mantiene una relación de los usuarios que pertenecen a cada uno de los roles. De este modo podremos saber qué usuarios pertenecen a qué roles.

Existen otras características que pasaremos por alto porque dan para otros artículos, como por ejemplo la posibilidad de almacenar datos para distintos usuarios  sin tener que almacenarlos en otra tabla de otra base de datos.

Nota: Hay un detalle curioso que refuerza la posibilidad de la compatibilidad con versiones anteriores, y es la auséncia de funciones de usuario en la base de datos. Resulta curioso como muchas de las características de los procedimientos almacenados se podrían haber implementado como funciones.

Accediendo a la base de datos desde .NET

En el siguiente post veremos el modelo de objetos de membresía, este modelo está disponible para acceder y manipular este repositorio desde nuestras aplicaciones .NET, y que se encuentra en los namespaces System.Web y System.Web.Extensions (aunque como decíamos podemos usarlo desde cualquier tipo de aplicación).

Saludos,


Artículos anteriores de la serie:

Usando ASP.NET membrership en Winforms (1 / n)

 


 

Actualización (artículos siguientes):

Usando ASP.NET membrership en Winforms (3 / n)

** crossposting desde el blog de LluĂ­s Franco en geeks.ms **

Leave a Reply

Your email address will not be published. Required fields are marked *