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(" ")看起来有点可疑。为什么这么多空格?你确定这样可以吗?
3条答案
按热度按时间ut6juiuv1#
我觉得这部分有问题:
在此行中:
next
您将状态设置为403,但继续执行代码。因此,即使令牌无效,您仍然调用
next
回调函数并尝试读取req.user
。因此,我猜测您的令牌可能有问题。当出现错误时,您应该立即返回:if(err) return res.status(403).json("token is not valid");
还有那个
split(" ")
看起来有点可疑。为什么这么多空格?你确定这样可以吗?s2j5cfk02#
我遇到了同样的问题,用if-else语句就解决了这个问题。
快速文档示例如下所示。
我猜可能是next()函数引起的,但是我看了文档,没有找到原因。
如果它不起作用,请尝试终止节点进程
nimxete23#
在auth.js文件中,更改:
收件人: