sábado, 26 de julio de 2014

Seguridad con MVC 5 (Identity)

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

}


6 comentarios:

Carlos Cruz dijo...
Este comentario ha sido eliminado por el autor.
Gera Sc dijo...

Muchas gracias por esto, me sirvió muhisimo

Chris Sanchez dijo...

Excelente..! Muchas gracias..!

jki dijo...

buenisimo!!!

Walter Dequino dijo...

Muchas gracias!! :D excelente

jki dijo...

Muy buen artículo, muy útil, muy bien explicado.
Felicidades!