我尝试在postman中使用jwt标记更新用户,但遇到此错误(无法读取未定义的属性ID)

ghhaqwfi  于 2022-11-07  发布在  Postman
关注(0)|答案(3)|浏览(176)

我在youtube上使用lama dev尝试了这个代码。我在postman上得到了这个错误,我复制了访问令牌,在我使用它的地方,它显示(令牌无效),但这个令牌与用户和视频相同。
当我查看终端时,它显示(无法读取未定义的属性id)或无法读取未定义的属性isAdmin)
我不知道如何解决它,如果问题是代码或我不知道如何使用 Postman 。我是一个新手在代码

  • 这是名为verifytoken.js路由文件 *

第一个

  • 这是名为user.js路由文件 *

第一个

ut6juiuv

ut6juiuv1#

我觉得这部分有问题:

if(authHeader) {
    const token = authHeader.split("     ")[1];
    jwt.verify(token, process.env.JWT_SEC, (err, user)=>{
       if(err) res.status(403).json("token is not valid");
            req.user = user;
            next();
        })
    } else {
        return res.status(401).json(" you are not authenticated");
    }

在此行中:next
您将状态设置为403,但继续执行代码。因此,即使令牌无效,您仍然调用next回调函数并尝试读取req.user。因此,我猜测您的令牌可能有问题。当出现错误时,您应该立即返回:if(err) return res.status(403).json("token is not valid");
还有那个split(" ")看起来有点可疑。为什么这么多空格?你确定这样可以吗?

s2j5cfk0

s2j5cfk02#

我遇到了同样的问题,用if-else语句就解决了这个问题。
快速文档示例如下所示。

if(err) { 
    res.status(403).json('Token is not valid');
} else { 
   req.user = user; 
   next();
}

我猜可能是next()函数引起的,但是我看了文档,没有找到原因。
如果它不起作用,请尝试终止节点进程

nimxete2

nimxete23#

在auth.js文件中,更改:

user && res.status(401).json("Wrong Credentials!");

收件人:

if (!user) {
  res.status(401).json("Wrong Credentials!");
  return;
}

相关问题