Vous êtes sur la page 1sur 25

<< Youtube API y .NET | Google Maps y WebForms ASP.

NET con Gmap3 >>

Autenticacin 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 mayora de sistemas que desarrollamos. En este articulo
vamos a observar lo fcil que es configurar la autenticacin de usuarios que visiten nuestro
sitio mediante la Pertenencia de ASP.NET, el cual requerir poco o nada de cdigo para una
completa administracin gracias a los controles de ASP.NET.

Configurando la autenticacin 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 versin de .NET Framework.
Si nuestra aplicacin es .NET Framework 2 o 3.5, nos dirigimos a la siguiente ruta
C:\Windows\Microsoft.NET\Framework\version2
Si nuestra aplicacin 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

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

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

Click en Siguiente. Finalizamos la configuracin proporcionando nuestros datos de


autenticacin de nuestra Base de Datos.

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

Por defecto, en la Versin .NET Framework 4.5 se ver de la siguiente manera.


1. <?xml version="1.0"?>
2.

3. <configuration>
4.
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 configuracin bsica, debido a que esta puede variar
dependiendo de las necesidades del desarrollo. Inicialmente configuramos la cadena de
conexin con nuestra Base de Datos SQL (El nombre de nuestra cadena de conexin
name puede ser cualquiera, pero es necesario tenerlo presente para ms 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.
8.
9.
10.

<connectionStrings>
<add name="AspNetSqlServer"
connectionString="cadenadeconexion"
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

Podemos observar nuestra cadena de conexin de nuestra Base de Datos, solo tendramos
que copiarla a nuestro archivo de configuracin y proporcionar la clave.

Ya configurada nuestra cadena de conexin procederemos a configurar nuestro tipo de


autenticacin, la cual se basar en formularios (De esta manera podemos controlar el acceso
a las paginas) y definimos la pgina 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.
14.
15.

<forms loginUrl="login.aspx" name="Login"/>


</authentication>
</system.web>

16.
17. </configuration>

Un detalle importante es saber que podemos tener archivos de configuracin Web.config


por carpeta que haya en nuestra aplicacin y la configuracin que se realice se tomar para
las pginas de ese directorio y para las pginas de las carpetas descendientes.

Aprovechando esta lgica 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>

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


denegamos.

Si quisiramos referirnos solo a una pgina, un ejemplo sera de la siguiente manera


1. <configuration>
2.
3.

<location path="Login.aspx">

4.

<system.web>

5.

<authorization>

6.

<allow users="?"/>

7.

</authorization>

8.

</system.web>
</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 vera 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.
14.

<forms loginUrl="login.aspx" name="Login"/>


</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.
29.

</providers>
</membership>

30.

<roleManager defaultProvider="SqlProvider"
enabled="true">

31.

<providers>

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="F83A6FC2271002158D0ED7F7DC32A0043391C125C2B8613
9689A99D6F217EE2C"
41.

validation="SHA1"

42.

decryption="AES" />

43.

</system.web>

44. </configuration>

Para terminar la configuracin de nuestro Web.config es recomendable cambiar el


machineKey entrando a la pgina 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 encriptacin son por ejemplo:

Es obvio que podemos cambiar la configuracin 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 conexin definido anteriormente.
Para validar nuestra configuracin procederemos a crear un usuario desde la herramienta de
Administracin de Sitios Web

Nos dirigimos a la seccin 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 configuracin, debido a que los usuarios normalmente se registrarn en una pgina
de nuestra aplicacin e iniciarn sesin, haciendo uso de los controles de ASP.NET.

Click en crear usuario, llenamos los datos y guardamos.

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

Por lo tanto finalizamos con xito nuestra configuracin bsica de autenticacin de


Usuarios en ASP.NET. Mediante los controles de ASP.NET un usuario se podr loguear o
registrar automticamente (solo cambiaramos el diseo ya que hasta el momento no es
necesario escribir cdigo) y despus de haber iniciado sesin podramos 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 llenarn en el registro. Esta Tabla se relacionara con la
creada automticamente por nuestro sistema de autenticacin de Usuarios de ASP.NET
aspnet_Users y por lo tanto el Id de nuestros Usuarios sera de tipo GUID que en SQL se
conoce como uniqueidentifier.
Calificacin promedio 5.0 (de 3 persona(s))

Currently 5.0/5 Stars.

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 ms simples!Hola a todos! El da 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 da de hoy voy a explicarles como desarrollar el flujo
de cualquier aplicacin que ...Desarrollando Sitios Web HTML5 y echando un vistazo a los
MasterPages de ASP.NETHoy en da es muy importante desarrollar sitios web modernos
que ofrezcan una rica experiencia de us...

Inicio |

Archivo |

Contactarnos |

Suscribirse |

Filtrar por APML |

Iniciar sesin

| UP

Nicholls 2015 - Desarrollado por BlogEngine.NET 2.8.0.2 - Diseado por Farzin


Seyfolahi
Rosita hace un mes

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


configuration. Gracias

Responder

Compartir
o
o
o

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 configuracin
https://www.nuget.org/packages...
Y para la administracin de roles y de usuarios puedes instalar algn 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

Tomas Portillo hace un ao


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 ao


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

o
o Responder
o

o Compartir

ewwww hace un ao
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

o
o

Juan David Nicholls Moderador ewwww hace un ao


No entiendo tu definicin de mucho cdigo, esta es solo una forma de configurar la
autenticacin de usuarios y explicar como funciona.
o

o
o Responder
o

o Compartir

Alexander Figueroa hace 2 aos


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

Vous aimerez peut-être aussi