【发布时间】:2020-12-04 07:14:06
【问题描述】:
我试图解码通过 jwt 创建的令牌,以便我可以访问我的反应页面中的值并使用它。但由于某种原因它显示 “InvalidTokenError: Invalid token specified: Cannot read property 'replace' of undefined”这个错误,我真的需要帮助,非常感谢任何回答这个问题的人。
react.js 中的前端,解码令牌
useEffect(()=>{
const token=localStorage.usertoken
const decoded = jwt_decode(token);
setinfo({
id:decoded._id,
email:decoded.email,
username:decoded.username,
})
},[])
后端node.js
router.get("/info",authenticateToken,(req,res)=>{
UserProfile.findOne({_id: req.user._id})
.then(user=>{
console.log(user);
if(user){
res.json(user)
} else {
res.send("User does not exist")
}
})
.catch(err=>{
res.send("error:"+err);
})
})
function authenticateToken(req,res,next){
const authHeader= req.headers['authorization']
const token = authHeader && authHeader.split(' ')
if(token == null) return res.sendStatus(401)
jwt.verify(token,secretkey,(err,user)=>{
if(err) return res.sendStatus(403)
req.user = user
next();
})
}
【问题讨论】:
-
我看不到你在哪里使用替换。您需要显示该代码。如果你没有实现 replace 方法,那么你应该检查堆栈跟踪并找出函数做了什么。然后确保该函数在它的 args 中得到了它所需要的内容
-
我没有在代码中的任何地方使用replace,它在node modules包中jwt-decode的index.js中使用
标签: javascript node.js reactjs jwt json-web-signature