ASP.net: Creación de una Aplicación con Membership y Roles – Parte I
Hola a tod@s
Antes de empezar quisiera que se respondieran estas preguntas?
Cuantas veces has creado una tabla usuario?
Cuantas veces dejas la clave del usuario totalmente visible en un campo de tu Tabla Usuario?
Cuantas veces defines roles para acceder a unas carpetas?
Cuantas veces defines roles en cada pagina?
Cuantas veces defines una tabla Roles?
Cuantas veces quieres validar tus usuarios con el Active Directory de la Empresa?
Si has respondido todas las preguntas pos… en verdad necesitas de la membrecía de ASP.net jejeje en muchas ocasiones hacemos tareas tan repetitivas y poco productivas como por ejemplo crear un control de tipo Login que se conecte a una tabla y validar si los datos introducidos pertenecen o no al usuario para darle acceso, y si el usuario es algo hábil y quiere entrar a otra pagina diferente al login pues allí se nos enredaba un poco las cosas cierto?
Ya basta de tanto bla bla bla.. :) lo que quiero mostrarte en este tutorial es enseñarte a utilizar La membrecía, los roles y por que no también los perfiles de los usuarios que accederán a tu aplicación web y lo mejor de todo es que no tendrás que hacer malabares a como lo hacías antes para poder tener el control de tus usuarios.
La Membrecía ahora en adelante el Membership viene desde la versión ASP.net 2.0 por tanto si utilizas Visual Studio 2005 y quieres aplicar esto pues lo puedes usar sin inconvenientes. Un poco del concepto de MS:
La característica de pertenencia a grupo de ASP.NET versión 2.0 ofrece almacenamiento de credenciales seguro a los usuarios de la aplicación. Además, ofrece una API de pertenencia a grupo que simplifica la tarea de validar las credenciales del usuario cuando se utilizan con autenticación basada en formularios. Los proveedores de pertenencias a grupo abstraen el almacenamiento subyacente para mantener las credenciales de usuario. ASP.NET 2.0 incluye los siguientes proveedores:
ActiveDirectoryMembershipProvider. Este proveedor utiliza o el almacén de usuario Active Directory o el Active Directory Application Mode (ADAM).
SqlMembershipProvider. Este proveedor utiliza el almacén de usuario SQL Server.
Pues para empezar vamos abrir nuestro Visual Studio (Yo estaré utilizando Visual Studio 2010 Ultimate por tanto pueden usar el Visual Studio de su preferencia desde 2005 en adelante)
1. Crearemos un proyecto de tipo WebSite al que llamare WebMembership (Pueden crear de tipo Web Aplication, las de MVC vienen con algo de membrecía solo hay que darle algunos toques :))
2. Ahora abriremos el Archivo Web.Config y veremos los siguientes tags (Esto aplica si usas Visual Studio 2010 y en tu caso usas Visual Studio 2005 o Visual Studio 2008 no aparecerán estos tags por tanto deberán agregarlos)
<membership>
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ApplicationServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
Este fragmento de código nos permitirá decirle a nuestra aplicación que existirá un control de los usuario que ingresen o registren en nuestra aplicación, es decir,
Panorama 1:
Si se va registrar un usuario nuevo sencillamente agrego mi control de “CreateUserWizard” y el se comunicara con esta sección de la aplicación para verificar si permitirá los valores que les mencionare a continuación:
requiresUniqueEmail: Acepta dos valores “true” cuando al momento de registrarse exige que en la aplicación solo exista un único correo es decir que dos usuario no puedan utilizar la misma cuenta de correo y “false” es lo opuesto a lo mencionado.
requiresQuestionAndAnswer: Que al momento de registrarse se le pida una Pregunta y una Repuesta de seguridad, esto en caso de que el usuario desee reestablecer su contraseña y por seguridad se le pida estos datos, su valor por defecto es “false”.
minRequiredPasswordLength: Es la longitud mínima para la contraseña que por defecto es de “6”
minRequiredNonalphanumericCharacters: este exige la cantidad mínima de Caracteres no Alphaumericos, su valor por Defecto es “0”
Panorama 2:
Ahora en el caso de que el usuario ya registrado desee logearse utilizando el Control “Login” la aplicación verificara en los siguientes tags:
maxInvalidPasswordAttempts: Numero máximo de intentos fallidos de acceso a la aplicación, su valor por defecto es de “5” intentos.
passwordAttemptWindow: Tiempo de seguimiento de intentos incorrectos su valor es de “10” minutos.
Nota: el maxInvalidPasswordAttempts y el passwordAttemptWindow, trabajan en conjunto esto quiere decir que si el usuario o algún atacante intenta ingresar a nuestra aplicación en numero máximo de veces y en el tiempo de intento establecido con un único usuario dicho usuario se bloqueara en la base de datos, ahora si pasan los 10 minutos desde su ultima intento fallido y no había alcanzado los Máximos intentos pues la aplicación restablece el valor y le da 10 minutos mas y tiene 5 intentos mas :) esto es para proteger al usuario.
Panorama 3:
Ahora si lo que deseas es que tu usuario pueda restablecer su contraseña pues puedes utilizar el Control “PasswordRecovery” y verifica en esta sección si puede restablecer la contraseña.
enablePasswordRetrieval: Que el usuario puede recuperar su password.
Panorama 4:
Si lo que desea es cambiar su password puedes utilizar el Control “ChangedPassword”
enablePasswordReset: Habilita o deshabilita la posibilidad de Cambiar su contraseña.
Otros Elementos:
Hay otros elementos que no mencione y que no dejan de ser importantes que son los siguientes:
name: El nombre que le daremos a nuestro proveedor de membrecía que por Defecto es “AspNetSqlMembershipProvider”.
type: Tipo de Membresia a utlizar esto en caso de que deseemos utilizar la del ActiveDirectory, una Membresia personalizada o la de SQL, su valor por defecto es “System.Web.Security.SqlMembershipProvider”
connectionStringName: Nombre de la cadena de Conexion esta debe estar definida en el Tag de “connectionStrings”, su valor por defecto es “ApplicationServices” Le mostrare el tag que les hablo que se encuentra tambien en el web.Config a continuacion:
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
Que por cierto mas adelante cambiare la cadena de conexión ya que mi motor de base datos es diferente y no pienso atachar la base de datos si no conectarme directamente al motor SQL Server, mas adelante les explicare el por que.
applicationName: Nombre de nuestra aplicación, Definición MSDN: “se utiliza para identificar usuarios específicos a una aplicación. Es decir, el mismo nombre de usuario puede existir en la base de datos para múltiples aplicaciones ASP.NET que especificar un ApplicationName . Esto permite que múltiples aplicaciones para utilizar la misma base de datos para almacenar la información del usuario sin tropezar con nombre duplicado los conflictos entre usuarios. Por otra parte, varias aplicaciones ASP.NET pueden utilizar el mismo usuario de base de datos mediante la especificación de la misma ApplicationName . El ApplicationName se puede establecer mediante programación o mediante declaración en la configuración de la aplicación web.”. Su Valor por defecto es “/”
Bueno esto es todo por esta entrega lo espero para la siguiente publicación que será muy pronto.
Te ha gustado este Post?
Pues seria genial si pudieras compartirlo con otras personas y asi llegarle a mas personas que pudiera ser util esta publicación. Animate a compartir
| Compartir |
|
|
|
|
Deja tu Comentario




![Validate my RSS feed [Valid RSS]](http://validator.w3.org/feed/images/valid-rss-rogers.png)

