viernes, 2 de noviembre de 2012

Seguridad con MVC 4 (Membership)

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 "internet aplication" o "Aplicación de Internet"





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.




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:


UserProfile    --  Listado de usuarios
webpages_Membership  -- Contraseñas y reglas de seguridad
webpages_OAuthMembership - Almacena información acerca de los inicios de sesión de terceros, almacenará el nombre del proveedor (digamos Facebook) 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.
webpages_Roles    - Roles
webpages_UsersInRoles   -- Usuarios por roles.




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

INSERT INTO [dbo].[webpages_Roles]
                     ([RoleName])
         VALUES
                     ('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:

INSERT INTO [dbo].[webpages_UsersInRoles]
                     ([UserId]
                     ,[RoleId])
         VALUES
                     (1
                     ,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


4 comentarios:

Milo dijo...

Excelente recien empiezo con mvc y me rpeguntaba como manejar la seguridad... muchas gracias!

Carlos Juan dijo...

Para revisar si es parte de un role:

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

kenra dijo...

muy buen articulo pero quisiera saber que tengo que hacer para utilizar mis propias tablas de usuario que ya tengo creada

Dionny J. Prensa dijo...

Y ya tengo mi aplicacion hecha, tendre que abrir un template y hacer el Registro para que me se creen las tablas y despues copiar y pegar cada uno de los archivos?

Este articulo esta muy bien descrito como manejar la seguridad (ver como es la cosa), y esta muy bien pero en ningun lugar encuentro con configurar la seguridad una vez ya tengo mi proyecto iniciado.

Apreciaria su ayuda ya que no encuentro info de lo que busco exactamente :(