es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error en la autorización. No se puede leer la propiedad ‘role’ de null.

Estoy trabajando en la autorización y muestra el error “No se puede leer la propiedad ‘role’ de nulo”.

Mi código de autorización:

exports.authorizeRoles = (roles) => {
    return (req, res, next) => {
        user = req.user.role;

        isAllowed = false;

        user.roles.map((role) => {
            if (roles.includes(role)) {
                isAllowed = true;
            }
        });

        if (!isAllowed) {
            return res.status(401).json({
                status: "failed",
                message: "No tienes permisos para acceder a esto",
            });
        }

        next();
    };
};

Código de la ruta:

router.route('/product').get(isAuthenticatedUser, authorizeRoles("admin"), getAllProducts)

Error: “No se puede leer la propiedad ‘role’ de nulo”. ¡Por favor, ayúdeme…!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el objeto req.user es nulo, lo cual significa que el usuario no está autenticado o que el proceso de autenticación no está configurado correctamente.

    Para solucionar este error, debes asegurarte de que el usuario esté correctamente autenticado antes de llamar al middleware authorizeRoles. Puedes hacer esto agregando un middleware de autenticación, como isAuthenticatedUser, antes del middleware authorizeRoles.

    Por ejemplo, en tu código de ruta, puedes agregar el middleware isAuthenticatedUser antes de llamar al middleware authorizeRoles:

    router.route('/product').get(isAuthenticatedUser, authorizeRoles('admin'), getAllProducts)
    

    Asegúrate de que el middleware isAuthenticatedUser establezca correctamente el objeto de usuario en el objeto de solicitud (req.user). Una vez que el objeto de usuario esté correctamente configurado, el middleware authorizeRoles debería poder acceder al rol del usuario sin problemas.

Comments are closed.