sábado, 26 de julio de 2014

Seguridad con MVC 5 (Identity)

7 comentarios:
Guia Rapida de Membership en MVC4.

En MVC 4 es muy fácil utilizar esta herramienta, siga los siguientes pasos para ver un ejemplo practico.

1.) Cree un nuevo proyecto, 
        File --> New proyect
        Archivo - Nuevo Proyecto





2.)Luego seleccione la plantilla "MVC" 





3.) Abra su archivo web config y configure correctamente la información de su connection String para "DefaultConnection"





El web config debe quedar de la siguiente manera, recuerde que debe configurar acorde a su equipo.


  <connectionStrings> 
    <add name="DefaultConnection" connectionString="Data Source=localhost; 
            Initial Catalog=northwind;user id=sa;password=P@ssw0rd" providerName="System.Data.SqlClient" /> 
  </connectionStrings>

Vamos a ver una imagen de la base de datos antes de crear nuestro primer usuario.




4.) Ahora vamos a crear nuestro primer usuario, para esto debemos ejecutar nuestro proyecto.

Precione F5 para ejecutar el proyecto 




Creer 2 usuarios, administrador y user1, esto nos será de utilidad para los próximos pasos.

Si todo esta correcto debería haber creado las tablas:


AspNetUsers    --  Catalogo de usuarios
AspNetRoles    -Catalogo de Roles
AspNetUserRoles   -- Catalogo Usuarios por roles
AspNetUserClaims - Almacena información acerca de los inicios de sesión de terceros, almacenará el nombre del proveedor (digamos Facebook, Google, Live) la identificación del proveedor y la identificación de usuario. El ID de usuario es normalmente un símbolo para identificar a cada usuario.




5.) Agregando Roles, Para agregar roles en muy facil solo hacemos un insert en la tabla webpages_Roles.

INSERT INTO [dbo].[AspNetRoles]
(id,Name)
VALUES
 (1,'administradores')
        

6.) Ahora vamos agregar usuario "administrador" a nuestro rol "Administradores", Pero primero debemos saber que id tiene nuestro usuario, para esto ejecutamos:





Ahora ejecutamos:
Ya que el id es muy largo utilizaremos el query para hacer mas fácil el insert.

declare @id nvarchar(128)
select @id=id    
from AspNetUsers
where UserName='adminitrator'

INSERT INTO AspNetUserRoles
([UserId]    
,[RoleId])    
VALUES    
(@id
,1)

        
5.) En MVC la seguridad se agrega en los controles, por cada acción, vamos hacer un ejemplo, en la carpeta controller habrá HomeController y pruebe con las siguientes posibilidades.


 [Authorize] 
        public ActionResult About() 
        { 
            return View(); 
        } 

[Authorize(Roles = "administradores")] 
        public ActionResult About() 
        { 
            return View(); 
        } 

[Authorize(Users="user1")] 
        public ActionResult About() 
        { 
            return View(); 
        }

Authorize: Permitira todos los usuarios ya autenticados.
Authorize Roles: Solo los roles autorizados en este ejemplo: Administradores
Authorize Users: Solo los usuarios autorizados en este ejemplo: User1

Nota:
Si quieren verificar un role desde Razor.

if (User.IsInRole("rolename")) {
// my action

}


Ver