令牌无效错误:指定的令牌无效:无法读取未定义的属性“替换”?

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 变量并刷新页面

在我的例子中,本地存储变量名称是 myTokenundefined,所以我删除了变量并刷新了页面

【讨论】:

【参考方案3】:

调用云函数时,尽量在post请求中添加完整的函数url,而不是“/login”。

【讨论】:

以上是关于令牌无效错误:指定的令牌无效:无法读取未定义的属性“替换”?的主要内容,如果未能解决你的问题,请参考以下文章

Angular 8:错误类型错误:无法读取未定义的属性“无效”

TypeError:无法读取未定义商店调度 vuex 的属性“令牌”

未捕获的错误:传输令牌时地址无效

无法读取未定义的属性“代码”,解码 Firebase ID 令牌失败

发布游戏成就 - 令牌无效错误:“已指定 ID”

某些设备的令牌无效