ASP.net Roles

23
<< Youtube API y .NET | Google Maps y WebForms ASP.NET con Gmap3 >> Autenticación de Usuarios en ASP.NET 14. julio 2013 03:10 / Nicholls / ASP.NET . SQL . C# / Comentarios (0) Siempre ha sido muy importante el hecho de autenticar usuarios en nuestras aplicaciones. El hecho de poder establecer roles de usuarios, de poder controlar los permisos de los usuarios es muy necesario en la mayoría de sistemas que desarrollamos. En este articulo vamos a observar lo fácil que es configurar la autenticación de usuarios que visiten nuestro sitio mediante la Pertenencia de ASP.NET, el cual requerirá poco o nada de código para una completa administración gracias a los controles de ASP.NET. Configurando la autenticación de Usuarios en ASP.NET con tu Base de Datos SQL Primero debemos configurar nuestra Base de Datos SQL, para esto ya existe un Wizard que viene incluido en nuestra versión de .NET Framework.

description

ASP.net con Membership

Transcript of ASP.net Roles

Page 1: ASP.net Roles

<< Youtube API y .NET | Google Maps y WebForms ASP.NET con Gmap3 >>

Autenticación de Usuarios en ASP.NET

14. julio 2013 03:10 / Nicholls / ASP.NET . SQL . C# / Comentarios (0)

Siempre ha sido muy importante el hecho de autenticar usuarios en nuestras aplicaciones. El hecho de poder establecer roles de usuarios, de poder controlar los permisos de los usuarios es muy necesario en la mayoría de sistemas que desarrollamos. En este articulo vamos a observar lo fácil que es configurar la autenticación de usuarios que visiten nuestro sitio mediante la Pertenencia de ASP.NET, el cual requerirá poco o nada de código para una completa administración gracias a los controles de ASP.NET.

Configurando la autenticación de Usuarios en ASP.NET con tu Base de Datos SQL

Primero debemos configurar nuestra Base de Datos SQL, para esto ya existe un Wizard que viene incluido en nuestra versión de .NET Framework.

Si nuestra aplicación es .NET Framework 2 o 3.5, nos dirigimos a la siguiente ruta

C:\Windows\Microsoft.NET\Framework\version2

Si nuestra aplicación es .NET Framework 4 o 4.5, nos dirigimos a la siguiente ruta

C:\Windows\Microsoft.NET\Framework\version4

Cuando ya estemos ubicados en la ruta respectiva, buscamos el siguiente archivo: aspnet_regsql.exe

Page 2: ASP.net Roles

Lo ejecutamos y nos abrirá una ventana de Dialogo como la siguiente.

Observaremos una descripción del Asistente, damos Click en Siguiente. En esta parte podemos visualizar que tenemos como opciones instalar la configuración de pertenencia en nuestra Base de Datos(o en una nueva) y Eliminar la configuración que ya tengamos en nuestra Base de Datos.

Page 3: ASP.net Roles

Click en Siguiente. Finalizamos la configuración proporcionando nuestros datos de autenticación de nuestra Base de Datos.

Page 4: ASP.net Roles

Ahora abrimos nuestra aplicación en Visual Studio. Por defecto al crear una aplicación o Sitio Web se crea un archivo de configuración Web.config, de lo contrario procedemos a crearlo.

Page 5: ASP.net Roles

Por defecto, en la Versión .NET Framework 4.5 se verá de la siguiente manera.

1. <?xml version="1.0"?> 2.   3. <configuration> 4.  

Page 6: ASP.net Roles

5.     <system.web> 6.       <compilation debug="false" targetFramework="4.5" /> 7.       <httpRuntime targetFramework="4.5" /> 8.     </system.web> 9.   10. </configuration>

En este ejemplo realizaremos una configuración básica, debido a que esta puede variar dependiendo de las necesidades del desarrollo. Inicialmente configuramos la cadena de conexión con nuestra Base de Datos SQL (El nombre de nuestra cadena de conexión “name” puede ser cualquiera, pero es necesario tenerlo presente para más adelante)

1. <?xml version="1.0"?> 2. <!-- 3.   For more information on how to configure your ASP.NET

application, please visit 4.   http://go.microsoft.com/fwlink/?LinkId=169433 5.   --> 6. <configuration> 7.   <connectionStrings> 8.     <add name="AspNetSqlServer" 9.         connectionString="cadenadeconexion" 10.         providerName="System.Data.SqlClient" /> 11.   </connectionStrings> 12.   <system.web> 13.     <compilation debug="true" targetFramework="4.5"/> 14.     <httpRuntime targetFramework="4.5"/> 15.   </system.web> 16. </configuration>

Donde la cadenadeconexion podemos obtenerla de la siguiente manera

Page 7: ASP.net Roles
Page 8: ASP.net Roles

Podemos observar nuestra cadena de conexión de nuestra Base de Datos, solo tendríamos que copiarla a nuestro archivo de configuración y proporcionar la clave.

Page 9: ASP.net Roles

Ya configurada nuestra cadena de conexión procederemos a configurar nuestro tipo de autenticación, la cual se basará en formularios (De esta manera podemos controlar el acceso a las paginas) y definimos la página de login por si el usuario esta intentando acceder y no se ha autenticado.

1. <?xml version="1.0"?> 2.   3. <configuration> 4.   <connectionStrings> 5.     <add name="AspNetSqlServer" 6.         connectionString="Data

Source=DirecciondelServidor;Initial Catalog=NombreBasedeDatos;User ID=NombreUsuario;Password=Clave"

7.         providerName="System.Data.SqlClient" /> 8.   </connectionStrings> 9.   <system.web> 10.     <compilation debug="false" targetFramework="4.5" /> 11.     <httpRuntime targetFramework="4.5" /> 12.     <authentication mode="Forms"> 13.       <forms loginUrl="login.aspx" name="Login"/> 14.     </authentication>

Page 10: ASP.net Roles

15.   </system.web> 16.   17. </configuration>

Un detalle importante es saber que podemos tener archivos de configuración Web.config por carpeta que haya en nuestra aplicación y la configuración que se realice se tomará para las páginas de ese directorio y para las páginas de las carpetas descendientes.

Aprovechando esta lógica podemos hacer uso eficaz de la etiqueta authorization (ubicada dentro de la etiqueta system.web de nuestro Web.config) que nos permite configurar los accesos de los usuarios.

1. <authorization> 2.    <allow users="*"/><!-- Permitimos acceso a todos los

Usuarios --> 3.    <allow roles="Admin,SuperAdmin"/><!-- Permitimos acceso a

todos los Usuarios de rol Admin o SuperAdmin --> 4.    <deny users="?"/><!-- Denegamos acceso a todos los Usuarios

Anonimos --> 5. </authorization>

Page 11: ASP.net Roles

Este es solo un ejemplo, lo importante es que siempre permitamos acceso y luego denegamos.

Si quisiéramos referirnos solo a una página, un ejemplo sería de la siguiente manera

1. <configuration> 2.     <location path="Login.aspx"> 3.       <system.web> 4.         <authorization> 5.           <allow users="?"/> 6.         </authorization> 7.       </system.web> 8.     </location> 9. </configuration>

Continuando con nuestro ejemplo configuramos nuestro proveedor de Usuarios (membership) y nuestro proveedor de roles de Usuario (roleManager), por lo tanto nuestro archivo Web.config se vería de la siguiente manera

1. <?xml version="1.0"?> 2.   3. <configuration> 4.   <connectionStrings> 5.     <add name="AspNetSqlServer" 6.         connectionString="Data

Source=DirecciondelServidor;Initial Catalog=NombreBasedeDatos;User ID=NombreUsuario;Password=Clave"

7.         providerName="System.Data.SqlClient" /> 8.   </connectionStrings> 9.   <system.web> 10.     <compilation debug="false" targetFramework="4.5" /> 11.     <httpRuntime targetFramework="4.5" /> 12.     <authentication mode="Forms"> 13.       <forms loginUrl="login.aspx" name="Login"/> 14.     </authentication> 15.     <membership

defaultProvider="AspNetSqlMembershipProvider"> 16.       <providers> 17.         <clear/> 18.         <add name="AspNetSqlMembershipProvider" 19.              type="System.Web.Security.SqlMembershipProvider" 20.              connectionStringName="AspNetSqlServer" 21.              applicationName="/" 22.              minRequiredNonalphanumericCharacters="0" 23.              maxInvalidPasswordAttempts="5" 24.              enablePasswordRetrieval="false" 25.              enablePasswordReset="true" 26.              requiresQuestionAndAnswer="false" 27.              requiresUniqueEmail="true"/> 28.       </providers> 29.     </membership> 30.     <roleManager defaultProvider="SqlProvider"

enabled="true"> 31.       <providers>

Page 12: ASP.net Roles

32.         <clear/> 33.         <add name="SqlProvider" 34.              type="System.Web.Security.SqlRoleProvider" 35.              connectionStringName="AspNetSqlServer" 36.              applicationName="/"/> 37.       </providers> 38.     </roleManager> 39.     <machineKey

validationKey="CE72B8A4671D90F164C189E1379DFB4353DD5BB8CD2CFF0"

40.                 decryptionKey="F83A6FC2271002158D0ED7F7DC32A0043391C125C2B86139689A99D6F217EE2C"

41.                 validation="SHA1" 42.                 decryption="AES" /> 43.   </system.web> 44. </configuration>

Para terminar la configuración de nuestro Web.config es recomendable cambiar el machineKey entrando a la página http://aspnetresources.com/tools/machineKey y damos Click en Generate Key

El machineKey es necesario por ejemplo si estamos encriptando la clave de los Usuarios.

Algunas formas de encriptación son por ejemplo:

Page 13: ASP.net Roles

Es obvio que podemos cambiar la configuración del proveedor de Usuarios (membership) y  del proveedor de roles de Usuario (roleManager) por el que requiera nuestro desarrollo, es importante observar que para los dos, el connectionStringName será el nombre de nuestra cadena de conexión definido anteriormente.

Para validar nuestra configuración procederemos a crear un usuario desde la herramienta de Administración de Sitios Web

Page 14: ASP.net Roles

Nos dirigimos a la sección de Seguridad. En esta podemos crear usuarios manualmente y crear Roles de usuario, solo en este caso crearemos un usuario por este medio para validar nuestra configuración, debido a que los usuarios normalmente se registrarán en una página de nuestra aplicación e iniciarán sesión, haciendo uso de los controles de ASP.NET.

Click en crear usuario, llenamos los datos y guardamos.

Page 15: ASP.net Roles

Si todo ha salido bien, el mensaje que se mostrará será el siguiente

Por lo tanto finalizamos con éxito nuestra configuración básica de autenticación de Usuarios en ASP.NET. Mediante los controles de ASP.NET un usuario se podrá loguear o registrar automáticamente (solo cambiaríamos el diseño ya que hasta el momento no es necesario escribir código) y después de haber iniciado sesión podríamos obtener los datos del usuario de la siguiente manera

1. var membershipUser = System.Web.Security.Membership.GetUser(); 2. Guid userId = (Guid)membershipUser.ProviderUserKey;//Obtener id

del Usuario 3. string password = membershipUser.GetPassword();//Obtener clave

del Usuario

Lo recomendable es crear una Tabla donde tendremos los datos adicionales que necesitemos de los usuarios y que llenarán en el registro. Esta Tabla se relacionaría con la creada automáticamente por nuestro sistema de autenticación de Usuarios de ASP.NET aspnet_Users y por lo tanto el Id de nuestros Usuarios sería de tipo GUID que en SQL se conoce como uniqueidentifier.

Calificación promedio 5.0 (de 3 persona(s))

Currently 5.0/5 Stars.

Page 16: ASP.net Roles

1 2 3 4 5

Etiquetas : ASP.NET , SQL , C#

Publicaciones relacionadas

Un poco de Knockout.js y Linq.js con ASP.NET MVC y Entity Framework para hacer nuestros Desarrollos Web mucho más simples!Hola a todos! El día de hoy quiero mostrarles como pueden mejorar la manera en que desarrollan sus p...Desarrollando Aplicaciones en Facebook con ASP.NET MVC, Entity Framework y Facebook SDK (Javascript y .NET)Hola a todos! El día de hoy voy a explicarles como desarrollar el flujo de cualquier aplicación que ...Desarrollando Sitios Web HTML5 y echando un vistazo a los MasterPages de ASP.NETHoy en día es muy importante desarrollar sitios web modernos que ofrezcan una rica experiencia de us...

Inicio | Archivo | Contactarnos | Suscribirse | Filtrar por APML | Iniciar sesión | UP

Nicholls © 2015 - Desarrollado por BlogEngine.NET 2.8.0.2 - Diseñado por Farzin Seyfolahi

Rosita • hace un mes

Tengo un problema: No me aparece en el menú Sitio web el submenú Asp.net configuration. Gracias

1 • Responder • Compartir ›

o

o

o

Page 17: ASP.net Roles

o

o

Juan David Nicholls Moderador Rosita • hace un mes

Desde Visual Studio 2012 en adelante ya no aparece en el menú, te recomiendo que instales Universal Providers que te realiza toda esta configuración https://www.nuget.org/packages...Y para la administración de roles y de usuarios puedes instalar algún paquete para memberships, como por ejemplo http://www.mvccentral.net/Stor...Saludos! :)

o

o •o Responder o •o Compartir ›

o

o

Rosita Juan David Nicholls • hace un mes

Muchas gracias :)

• Responder • Compartir ›

Page 18: ASP.net Roles

Tomas Portillo • hace un año

Cual es la base de datos que guarda la info de los usuarios?

• Responder • Compartir ›

o

o

o

o

o

Juan David Nicholls Moderador Tomas Portillo • hace un año

La que tu hayas puesto en el campo "Base de Datos" del Wizard "Asistente para la instalación de SQL Server de ASP.NET", en el ejemplo se puede observar muy claramente ;)

o

o •o Responder o •

Page 19: ASP.net Roles

o Compartir ›

o

ewwww • hace un año

mas facil programar personalizado, mucho codigo

• Responder • Compartir ›

o

o

o

o

o

Pablo ewwww • hace un mes

de acuerdo, ademas que utilizar MembershipProvider para tu sitio web es mmm...

o 1 o •o Responder o •o Compartir ›

Page 20: ASP.net Roles

o

o

o

Juan David Nicholls Moderador ewwww • hace un año

No entiendo tu definición de mucho código, esta es solo una forma de configurar la autenticación de usuarios y explicar como funciona.

o

o •o Responder o •o Compartir ›

o

Alexander Figueroa • hace 2 años

eres un genio, gracias por tomarte el tiempo y de compartir tus conocimientos. Muy buenos post