Parte 7: Pertenencia y autorización
por Jon Galloway
MVC Music Store es una aplicación de tutorial que presenta y explica paso a paso cómo usar ASP.NET MVC y Visual Studio para el desarrollo web.
MVC Music Store es una implementación ligera de la tienda de muestras que vende álbumes de música en línea e implementa la administración básica del sitio, el inicio de sesión de usuario y la funcionalidad del carro de la compra.
En esta serie de tutoriales se detallan todos los pasos realizados para compilar la aplicación de ejemplo de MVC Music Store ASP.NET. La parte 7 abarca la pertenencia y la autorización.
Nuestro controlador del Administrador de la Tienda es accesible actualmente para cualquier persona que visite nuestro sitio. Vamos a cambiar esto para restringir el permiso a los administradores del sitio.
Adición de AccountController y Views
Una diferencia entre la plantilla de aplicación web completa de ASP.NET MVC 3 y la plantilla de aplicación web vacía de ASP.NET MVC 3 es que la plantilla vacía no incluye un controlador de cuentas. Agregaremos un controlador de cuenta copiando algunos archivos de una nueva aplicación ASP.NET MVC creada a partir de la plantilla completa de aplicación web de MVC 3 de ASP.NET.
Cree una nueva aplicación ASP.NET MVC con la plantilla de aplicación web de ASP.NET MVC 3 completa y copie los archivos siguientes en los mismos directorios de nuestro proyecto:
- Copiar AccountController.cs en el directorio Controllers
- Copiar AccountModels en el directorio Models
- Cree un directorio Account dentro del directorio Views y copie las cuatro vistas
Cambie el espacio de nombres de las clases Controller y Model para que comiencen con MvcMusicStore. La clase AccountController debe usar el espacio de nombres MvcMusicStore.Controllers y la clase AccountModels debe usar el espacio de nombres MvcMusicStore.Models.
Nota: Estos archivos también están disponibles en la descarga MvcMusicStore-Assets.zip, desde donde copiamos los archivos de diseño de nuestro sitio al principio del tutorial. Los archivos de pertenencia se encuentran en el directorio Código.
La solución actualizada debe ser similar a la siguiente:
Agregar un usuario administrativo con el sitio de configuración de ASP.NET
Antes de requerir autorización en nuestro sitio web, necesitaremos crear un usuario con acceso. La manera más fácil de crear un usuario es usar el sitio web integrado de ASP.NET Configuration.
Inicie el sitio web de configuración de ASP.NET haciendo clic en el icono del Explorador de soluciones.
Esto inicia un sitio web de configuración. Haga clic en la pestaña Seguridad de la pantalla principal y, a continuación, haga clic en el vínculo "Habilitar roles" en el centro de la pantalla.
Haga clic en el vínculo "Crear o administrar roles".
Escriba "Administrador" como nombre del rol y presione el botón Agregar rol.
Haga clic en el botón Atrás y, a continuación, haga clic en el vínculo Crear usuario en el lado izquierdo.
Rellene los campos de información de usuario de la izquierda con la siguiente información:
Campo | Valor |
---|---|
Nombre de usuario | Administrador |
contraseña | |
Confirmar contraseña | |
Correo electrónico | (cualquier dirección de correo electrónico funcionará) |
Pregunta de seguridad | (lo que quiera) |
Respuesta de seguridad | (lo que quiera) |
Nota:
- En la tabla anterior, se ha omitido la contraseña.
- Por supuesto, puede usar cualquier contraseña que quiera. La configuración de seguridad de contraseña predeterminada requiere una contraseña de 7 caracteres de longitud y contiene un carácter no alfanumérico.
Seleccione el rol Administrador para este usuario y haga clic en el botón Crear usuario.
En este punto, debería ver un mensaje que indica que el usuario se creó correctamente.
Ahora puede cerrar la ventana del explorador.
Autorización basada en roles
Ahora podemos restringir el acceso al StoreManagerController mediante el atributo [Authorize], especificando que el usuario debe estar en el rol Administrador para acceder a cualquier acción del controlador de la clase .
[Authorize(Roles = "Administrator")]
public class StoreManagerController : Controller
{
// Controller code here
}
Nota: El atributo [Authorize] se puede colocar en métodos de acción específicos, así como en el nivel de clase Controller.
Ahora, al navegar a /StoreManager se abre un cuadro de diálogo Iniciar sesión:
Después de iniciar sesión con nuestra nueva cuenta de administrador, podemos ir a la pantalla Edición del álbum como antes.