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…!
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, comoisAuthenticatedUser
, antes del middlewareauthorizeRoles
.Por ejemplo, en tu código de ruta, puedes agregar el middleware
isAuthenticatedUser
antes de llamar al middlewareauthorizeRoles
: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 middlewareauthorizeRoles
debería poder acceder al rol del usuario sin problemas.