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 ASP.NET MVC Music Store. La parte 7 abarca la pertenencia y la autorización.
En la actualidad, cualquier persona que visite nuestro sitio puede acceder a nuestro controlador de administrador de tiendas. 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 ASP.NET MVC 3 completa y la plantilla de aplicación web ASP.NET MVC 3 vacía es que la plantilla vacía no incluye un controlador de cuentas. Agregaremos un controlador de cuentas copiando algunos archivos de una nueva aplicación ASP.NET MVC creada a partir de la plantilla completa de aplicación web ASP.NET MVC 3.
Cree una nueva aplicación ASP.NET MVC utilizando la plantilla completa de aplicación web ASP.NET MVC 3 y copie los siguientes archivos 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 por 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 de MvcMusicStore-Assets.zip desde la que copiamos nuestros archivos de diseño de 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 forma más sencilla de crear un usuario es utilizar el sitio web de configuración ASP.NET incorporado.
Inicie el sitio web de Configuración 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 usuario | Administrador |
Contraseña | password123! |
Confirm Password | password123! |
Correo electrónico | (cualquier dirección de correo electrónico funcionará) |
Pregunta de seguridad | (lo que quiera) |
Respuesta de seguridad | (lo que quiera) |
Nota: Por supuesto, puede usar cualquier contraseña que desee. 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 Controlador.
Ahora, al navegar a /StoreManager aparece un cuadro de diálogo de inicio de 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.