令牌无效错误:指定的令牌无效:无法读取未定义的属性“替换”?
Posted
技术标签:
【中文标题】令牌无效错误:指定的令牌无效:无法读取未定义的属性“替换”?【英文标题】:Invalid Token Error: Invalid token specified: Cannot read property 'replace' of undefined? 【发布时间】: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中使用 【参考方案1】:我认为您从 localStorage 访问令牌的方式是错误的。 而不是
localStorage.usertoken
使用
localStorage.getItem("userToken")
考虑到您已设置用户令牌
localStorage.setItem("userToken", token_received_from_backend);
【讨论】:
【参考方案2】:我也遇到了同样的错误。就我而言,我犯了一个错误。在 Localstorage 中请移除 token 变量并刷新页面
在我的例子中,本地存储变量名称是 myToken 是 undefined,所以我删除了变量并刷新了页面【讨论】:
【参考方案3】:调用云函数时,尽量在post请求中添加完整的函数url,而不是“/login”。
【讨论】:
以上是关于令牌无效错误:指定的令牌无效:无法读取未定义的属性“替换”?的主要内容,如果未能解决你的问题,请参考以下文章
Angular 8:错误类型错误:无法读取未定义的属性“无效”
TypeError:无法读取未定义商店调度 vuex 的属性“令牌”