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.

Estoy tratando de actualizar un usuario utilizando el token jwt en postman y estoy obteniendo este error (no se puede leer la propiedad id de indefinido).

Estoy intentando este código usando Lama Dev en YouTube, y estoy obteniendo este error en Postman. Copio el token de acceso y cuando lo uso, muestra (el token no es válido), pero es el mismo token que se muestra en el video.

Cuando miro en la terminal, muestra (no se puede leer la propiedad id de indefinido) o no se puede leer la propiedad isAdmin de indefinido).

No sé cómo solucionarlo, si el problema es el código o si no sé cómo usar Postman. SOY UN NOVATO EN CÓDIGO.

Este es el archivo de ruta llamado verifytoken.js:

const jwt = require("jsonwebtoken")

const verifyToken = (req, res, next) => {
    const authHeader = req.headers.token
    if (authHeader) {
        const token = authHeader.split("     ")[1];
        jwt.verify(token, process.env.JWT_SEC, (err, user)=>{
            if (err) res.status(403).json("el token no es válido");
            req.user = user;
            next();
        })
    } else {
        return res.status(401).json("no estás autenticado");
    }
};

const verifyTokenAndAuthorization = (req, res, next) => {
    verifyToken(req, res, () => {
        if (req.user.id === req.params.id || req.user.isAdmin) {
            next();
        } else {
            res.status(403).json("no estás autorizado para hacer eso");
        }
    });
};

const verifyTokenAndAdmin = (req, res, next) => {
    verifyToken(req, res, () => {
        if (req.user.isAdmin) {
            next();
        } else {
            res.status(403).json("no eres el administrador");
        }
    });
};

module.exports = { verifyToken, verifyTokenAndAuthorization, verifyTokenAndAdmin };

Este es el archivo de ruta llamado user.js:

“`
const User = require(“../models/User”);
const { verifyToken, verifyTokenAndAuthorization, verifyTokenAndAdmin } = require(“./verifyToken”);

const router = require(“express”).Router();

// ACTUALIZAR
router.put(“/:id”, verifyTokenAndAuthorization, async (req, res) => {
if (req.body.password) {
req.body.password = CryptoJS.AES.encrypt(
req.body.password,
process.env.PASS_SEC
).toString();
}
try {
const updatedUser = await User.findByIdAndUpdate(req.params.id, { $set: req.body }, { new: true });
res.status(200).json(updatedUser);
} catch (err) {
res.status(500).json(err);
}

});

// ELIMINAR

router.delete(“/:id”, verifyTokenAndAuthorization, async (req, res) => {
try {
await User.findByIdAndDelete(req.params.id)
res.status(200).json(“el usuario ha sido eliminado”);
} catch (err) {
res.status(500).json(err)
}
});

// OBTENER USUARIO

router.get(“/find/:id”, verifyTokenAndAdmin, async (req, res) => {
try {
const user = await User.findById(req.params.id);
const { password, …others } = user._doc;
res.status(200).json(others);
} catch (err) {
res.status(500).json(err)
}
});

module.exports = router;

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas con tu código y Postman. Es difícil diagnosticar el problema sin ver el código que estás utilizando en Postman. También es difícil saber lo que significan los mensajes de error sin ver el código que los produce.

    Es posible que el problema se deba al código, o podría ser un problema con la forma en que estás utilizando Postman. También es posible que el problema sea con el token de acceso que estás utilizando.

    Si todavía tienes problemas, es posible que desees considerar solicitar ayuda en un foro o de un programador más experimentado.

Comments are closed.