首页 > 解决方案 > 令牌无效错误:指定的令牌无效:无法读取未定义的属性“替换”?

问题描述

我试图解码通过jwt创建的令牌,以便我可以访问我的反应页面中的值并使用它。但由于某种原因,它显示“InvalidTokenError:指定的无效令牌:无法读取未定义的属性'替换'”这个错误,我真的需要帮助,非常感谢任何回答这个问题的人。

react.js中的前端,解码token

 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();
})
}

标签: javascriptnode.jsreactjsjwtjson-web-signature

解决方案


我认为您从 localStorage 访问令牌的方式是错误的。代替

localStorage.usertoken

利用

localStorage.getItem("userToken")

考虑到您已通过以下方式设置用户令牌

localStorage.setItem("userToken", token_received_from_backend);

推荐阅读