TUTORIALES

Node.js nivel intermedio: Control de acceso basado en roles

 El control de acceso basado en roles (RBAC) es un método comúnmente utilizado para gestionar los permisos de los usuarios en una aplicación. Con RBAC, los usuarios tienen roles asignados y los recursos de la aplicación tienen permisos asociados. Los usuarios pueden acceder a los recursos basados en sus roles y los permisos asignados a esos roles.

Aquí te muestro cómo puedes implementar el control de acceso basado en roles en una aplicación Express.js:

1. Definir roles y permisos:

Define los roles y los permisos asociados en tu aplicación. Por ejemplo, podrías tener roles como "admin", "usuario" y permisos como "crear", "leer", "actualizar" y "eliminar".

2. Asignar roles a los usuarios:

Asigna roles a los usuarios en tu sistema de autenticación, ya sea mediante un campo en la base de datos o utilizando algún otro mecanismo de gestión de usuarios.

3. Proteger rutas:

Utiliza middleware para proteger las rutas que requieren ciertos roles o permisos.

// Middleware para verificar el rol del usuario
function verificarRol(rolPermitido) {
  return (req, res, next) => {
    if (req.usuario && req.usuario.rol === rolPermitido) {
      return next(); // Si el usuario tiene el rol permitido, continuar
    }
    res.status(403).json({ mensaje: 'Acceso denegado' }); // Si no tiene el rol permitido, enviar error 403
  };
}

// Ruta protegida que requiere el rol de "admin"
app.get('/admin', verificarToken, verificarRol('admin'), (req, res) => {
  res.send('Bienvenido, administrador');
});

4. Obtener el rol del usuario:

Asegúrate de obtener el rol del usuario en el proceso de autenticación y almacenarlo en el objeto de solicitud (req).

// Middleware para verificar el token y decodificarlo
function verificarToken(req, res, next) {
  const token = req.headers['authorization'];
  if (!token) {
    return res.status(401).json({ mensaje: 'Token no proporcionado' });
  }

  jwt.verify(token, 'secreto', (error, decoded) => {
    if (error) {
      return res.status(401).json({ mensaje: 'Token inválido' });
    }
    req.usuario = decoded; // Guardar el usuario decodificado en la solicitud
    next();
  });
}

5. Uso en rutas:

Utiliza el middleware de verificación de roles en las rutas que requieran ciertos roles.

// Ruta protegida que requiere el rol de "usuario"
app.get('/usuario', verificarToken, verificarRol('usuario'), (req, res) => {
  res.send('Bienvenido, usuario');
});

Con estos pasos, has implementado un sistema de control de acceso basado en roles en tu aplicación Express.js. Asegúrate de definir adecuadamente tus roles y permisos, así como de proteger correctamente tus rutas para garantizar la seguridad de tu aplicación.



0 Comments:

Publicar un comentario