Vous êtes sur la page 1sur 13

Sistemas UNI. Instructor: V. Carlos, Segura P.

LABORATORIO Asp.Net – 6.

Derechos Reservados, solo para ser usados dentro de la


institución.
Derechos de Autor

El contenido de este laboratorio tiene todos los derechos reservados, por lo tanto no
se puede reproducir, transcribir, almacenar a un sistema de recuperación o de
alteración, asimismo la traducción a otro idioma de ninguna forma o por ningún
medio mecánico, manual, electrónico, magnético, óptico o de otro modo.

La persecución de una reproducción no autorizada tiene como


consecuencia la cárcel y/o multas.

UNIVERSIDAD NACIONAL DE INGENIERIA 1


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

6 Asp.Net

1 Miembros y Roles en un Proyecto Web

1.1 Creando Roles y Usuarios a nuestro proyecto

Desde hace tiempo he querido escribir sobre una técnica ASP.NET 2.0 que me parece interesante
compartir. Se trata de utilizar de manera combinada la funcionalidad de las clases Membership y Profiles
para establecer toda la maquinaria de administración y almacenamiento de usuarios. Sabemos que
ASP.NET 2.0 nos ofrece estas piezas de infraestructura para la construcción de soluciones Web con la
finalidad de agilizar la creación y manejo eficiente de usuarios, roles y perfiles, claro entre otras
posibilidades.

Lo que veremos en este post es una técnica que nos permite manipular usuarios con la clase Membership
haciendo uso de los controles Login y que además podamos relacionar y extender los datos que
requerimos asociar a un usuario a través del uso de la funcionalidad de Profiles para que de manera
conjunta extendamos esta funcionalidad a nuestro beneficio.

En muchas ocasiones cuando habilitamos Membership para el control y manejo de usuarios es común que
nos quedemos cortos con los datos de usuario que queremos almacenar y que son relevantes e incluso
requeridos para la aplicación que estamos construyendo. La clase Membership es una clase que cuenta
con métodos estáticos para crear nuevos, eliminar existentes, cambiar contraseñas y validar la existencia
de usuarios. Esta clase funciona con un modelo basado en proveedor el cual nos permite hacer que
trabaje independientemente del origen de datos donde se encuentra la información.

En la mayoría de los escenarios de una aplicación multi-usuario normalmente requerimos proporcionar


mucho más información que puede ser de utilidad para la aplicación que estamos escribiendo. Por
ejemplo:

El nombre completo del usuario


A que departamento pertenece
Que teléfono y extensión tiene
Incluso información de configuración visual o personalización

Seguro encontraras mucha mas información que ocupes asociar al contexto de un usuario.
Sin embargo Membership por su naturaleza se queda corto por decirlo así con la cantidad de datos que
almacena y en definitiva necesitamos asociar más información. Aquí es donde entra el uso de Profiles o en
otras palabras perfiles de usuario. Profiles en ASP.NET 2.0 es un mecanismo que permite almacenar de
manera persistente información adicional para cada usuario registrado en nuestro sitio. También funciona
bajo un modelo de tipo proveedor. Si deseas conocer mas sobre Profiles entra a este link. Por un lado
tenemos Membership para la administración de usuarios y Profiles para la extensión de la información de
un usuario en específico.

Los pasos para habilitar estas funcionalidades son:

Configurar una base de datos para el almacenamiento persistente de usuarios, roles y


perfiles
Configurar en el archivo web.config nuestra aplicación Web para utilizar dicha base de
datos de almacenamiento y crear algunos usuarios
Configurar en el archivo web.config el uso de perfiles y su estructura de información

UNIVERSIDAD NACIONAL DE INGENIERIA 2


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

Escribir código para obtener de nuestro almacenamiento persistente la información de un


usuario y su perfil.

Inicio para la Configuración de Administración Web:

1.- Desde el explorador de soluciones seleccionamos la opción de configuración Asp.Net.

2.- Al seleccionar esta opción se visualizara la siguiente página:

3.- Dentro de Seguridad, veremos las siguientes plantillas de Usuarios, Funciones y Reglas de Acceso:

4.- Dentro de la pestaña seleccionamos “Seleccionar el tipo de Autenticación”, el cual mostrara lo


siguiente:

UNIVERSIDAD NACIONAL DE INGENIERIA 3


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

5.- Luego, habilitar las funciones de Roles

6.- Para esto, crearemos nuevas funciones:

Administrador
User
PowerUser

Dentro de la siguiente ventana:

Finalmente, debería quedar como se muestra aquí:

UNIVERSIDAD NACIONAL DE INGENIERIA 4


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

7.- Ahora agregamos a los usuarios para nuestra web, dentro de seguridad agregamos un usuario:

Ingreso sus datos correspondientes y seleccione el tipo de usuario que se ha creado:

Al finalizar la creación del usuario, debemos tener la siguiente respuesta:

Al regresar, debemos tener un resumen como el siguiente:

8.- Al final de este proceso se debe de haber creado la base de seguridad de autenticación de usuarios:

Dentro del explorador de servidores, revisamos la base de datos de las tablas que se han creado:

UNIVERSIDAD NACIONAL DE INGENIERIA 5


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

Al seleccionar la tabla para revisar su contenido, encontraremos el usuario registrado:

1.2 Usando los servicios y controles de autenticación:

Se proporcionara un MasterPages con el nombre MPages.aspx, con un sitio de mapa configurado


incluyendo los WebForms siguientes:

Default.aspx
Login.aspx
CrearCuenta.aspx
Administrador.aspx
AdminCuenta.aspx
VerReportes.aspx

El diseño del MasterPages será:

UNIVERSIDAD NACIONAL DE INGENIERIA 6


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

El archivo Web.SiteMap

<siteMapNode url="Default.aspx" title="Inicio" description="">


<siteMapNode url="login.aspx" title="Login" description="" />
<siteMapNode url="CrearCuenta.aspx" title="Crear Cuenta" description="" />
<siteMapNode url="Administrador.aspx" title="Administrador" description="" />
<siteMapNode url="AdminCuenta.aspx" title="Admin Cuenta" description="" />
<siteMapNode url="VerReportes.aspx" title="Ver Reportes" description="" />
</siteMapNode>

El Archivo Web.Config revisar el siguiente contenido:

LoginView
Como ya se ha mencionado anteriormente, el control Login permite crear una página estándar de
inicio de sesión agregando una simple etiqueta a una página.

El control Login genera automáticamente una interfaz de inicio de sesión estándar. En su forma
predeterminada, la interfaz no resulta muy atractiva, pero se puede mejorar de forma muy rápida
la apariencia del control Login en Visual Studio .NET 2005 haciendo clic con el botón secundario
del mouse en el control y seleccionando AutoFormat (consulte la figura 3). Observe cómo se
crean cuadros de texto de nombre de usuario y contraseña, una casilla de verificación para
recordar al usuario la próxima vez que inicie sesión y un botón para enviar la información.

Tipos de vista:

AnonymousTemplate
Dentro de esta vista, colocamos un table con las dos Url’s como se muestra en la figura siguiente:

UNIVERSIDAD NACIONAL DE INGENIERIA 7


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

Para el “Inicio de Sesión” se redirige a la pagina: login.aspx


Para el “Crear una cuenta” se redirige a la página: Crearcuenta.aspx

LoggedInTemplate.
Dentro de esta vista, colocamos un table con las dos Url’s como se muestra en la figura siguiente:

Para el “Cambiar contraseña” se redirige a la página: CambiarClave.aspx

LoginName y LoginStatus
Los controles LoginName y LoginStatus permiten mostrar información sobre el estado actual de
la autenticación de un usuario. Después de que un usuario ha iniciado sesión en la aplicación, el
control LoginName muestra su nombre de usuario registrado. Si un usuario no se autentica con
la autenticación por formularios, el control LoginName no muestra nada. El control LoginName
se puede declarar en una página de la siguiente manera:

<asp:LoginName ID="LoginName1" Runat="server" />

LoginStatus, por su parte, permite que el usuario inicie o cierre sesión en la aplicación Web. El
control muestra uno de dos vínculos. Si el usuario no se ha autenticado, se muestra un vínculo a
la página Login.aspx. Si ya se ha autenticado, se muestra un vínculo que le permite cerrar sesión.
El control LoginStatus se declara de esta forma:
<asp:LoginStatus ID="LoginStatus1" Runat="server" />

Login
La pagina de default nos mostrara un mensaje de bienvenida y un link q nos llevara a ver el
estado del usuario pero para poder ingresar a la pagina debemos estar previamente logueados y
para eso implementamos la pagina de LogIn, nos vamos al ToolBox y agregamos un Control
llamdo LogIn, bueno en esta pagina no usaremos codigo, como ya es conocido esto es lo que se
estila en esta nueva version de ASP .NET 2.0, pero lo que si haremos es configurar las
propiedades del control para que se pueda adecuar a nuestra necesidad. Las propiedades a
configurar son las siguientes:

UNIVERSIDAD NACIONAL DE INGENIERIA 8


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

En la pagina login colocamos lo siguiente:

TitleText
UserNameLabelText

PasswordLabelText

RemenberMeText
LoginButtonText
PasswordRecoveryText

PasswordRecoveryText:
Indica el texto a mostrar, para el recordatorio de la contraseña.

PasswordRecoveryUrl:
Indica la dirección de la página a donde dirigirse para el recuerdo de la clave, la cual debe ser la
paina EnviaClave.aspx.

UserNameRequiredErrorMessage:
Indica el texto a mostrar, cuando se omite ingresar el usuario al tratar de iniciar la sesión.

PasswordRequiredErrorMessage:
Indica el texto a mostrar, cuando se omite ingresar la contraseña del usuario al tratar de iniciar la
sesión.

FailureText:
Indica el texto a mostrar, cuando no se logra iniciar la sesión.

CreateUserTex
Usado para mostrar el mensaje de un nuevo usuario, será el texto que ira en el control para crear
un nuevo usuario.

UNIVERSIDAD NACIONAL DE INGENIERIA 9


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

CreateUserUrl
Será la pagina a la cual nos redireccionara a la pagina donde crearemos un nuevo usuario. Es decir
la direccionamos a la pagina CrearCuenta.aspx.

ChangePassword
El control ChangePassword, como se puede suponer, permite a los usuarios cambiar sus
contraseñas registradas. El control crea cuadros de texto en los que se puede facilitar la
contraseña original y la nueva (consulte la figura 6).

Tipos de Vista:

Change Password
Success

Al igual que los controles CreateUserWizard y PasswordRecovery, el control


ChangePassword incluye una propiedad MailDefinition. Cuando se asignan valores a la
propiedad MailDefinition, el control ChangePassword envía automáticamente un mensaje de
correo electrónico al usuario cuando se cambia correctamente una contraseña.

UNIVERSIDAD NACIONAL DE INGENIERIA 10


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

CancelDestinationPageurl:
Será la pagina a la cual nos redireccionara en la acción del evento “Cancelar”. Aquí la
direccionamos a la pagina XXXxxxx.aspx

ContinueDestinationPageUrl
Será la pagina a la cual nos redireccionara al terminar de realizar el cambio de contraseña. Aquí la
direccionamos a la pagina XXXXX.aspx

CreateUserTex
Usado para mostrar el mensaje de un nuevo usuario, será el texto que ira en el control para crear
un nuevo usuario.

CreateUserUrl
Será la pagina a la cual nos redireccionara a la pagina donde crearemos un nuevo usuario. Es decir
la direccionamos a la pagina CrearCuenta.aspx

CreateUserWizard
CreateUserWizard permite crear una página estándar de registro de usuarios. Simplemente
agregando la siguiente etiqueta a la página, los nuevos usuarios podrán registrarse en el sitio
Web.

<asp:CreateUserWizard ID="CreateUserWizard1" Runat="server" />

La apariencia exacta de la interfaz generada por CreateUserWizard dependerá de la configuración


del proveedor de pertenencia a grupo de la aplicación. Por ejemplo, los cuadros de texto de la
pregunta y la respuesta para recuperar la contraseña sólo aparecen cuando el atributo
requiresQuestionAndAnswer presenta el valor true. La página de registro que se muestra en la
figura 4 se genera cuando se utiliza CreateUserWizard con el proveedor de pertenencia a grupo
AspNetAccessProvider predeterminado.

UNIVERSIDAD NACIONAL DE INGENIERIA 11


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

PasswordRecovery
El control PasswordRecovery permite que los usuarios de la aplicación Web puedan solicitar un
mensaje de correo electrónico de recordatorio de su contraseña (consulte la figura 5). Al igual que
el control CreateUserWizard, las propiedades del mensaje de correo electrónico enviado al
usuario se definen mediante la propiedad MailDefinition.

Propiedades de PasswordRecovery

Tipos de Vista

UserName
Question

Success

Dentro de las propiedades de passwordRecocvery se definen los atributos de MailDefinition para configrar
el envió de la clave a determinado correo:

UNIVERSIDAD NACIONAL DE INGENIERIA 12


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS
Sistemas UNI. Instructor: V. Carlos, Segura P.

Luego en el administrador dentro de la opción de Aplicación, seleccionamos “Definir configuración de


correo electrónico SMTP”

En el cual se debe de introducir el nombre del servidor de configuración para el correo SMTP.

UNIVERSIDAD NACIONAL DE INGENIERIA 13


FACULTAD DE INGENIERIA INDUSTRIAL Y DE SISTEMAS