无法解码jwt [关闭]

问题描述 投票:-2回答:1

我正在这个项目中,目标是创建一个学习平台及其完善的Coursera风格的方法,我使用了node,express,mongo和ejs来呈现我的文件。

此外,我使用jwt和cookie-parser(res.cookie)来存储jwt并使用中间件对每条路由从jwt进行身份验证。现在,为了显示用户的配置文件,我需要找到该用户的bybyId,但是该ID将存储在jwt中,并且我不知道如何解码有效负载。有任何想法吗?或其他任何想法如何显示用户个人资料?

令牌定义代码:

global.token = jwt.sign({ id:user._id,name:user.name}, jwtKey, {
    algorithm: 'HS256',
    expiresIn: '2d'
  }) 
res.cookie('user', token, {  expires: new Date(Date.now() + 3600000), httpOnly: true })
  res.redirect('/')

我想对上面定义的令牌进行解码,以便访问用户的ID并显示相应的信息。

javascript node.js express jwt ejs
1个回答
0
投票

解决方案:

app.get('/profile' ,middleware,async (req, res) => {


    let base64Url = req.cookies.user.split('.')[1]; // token you get
    let base64 = base64Url.replace('-', '+').replace('_', '/');
    let decodedData = JSON.parse(Buffer.from(base64, 'base64').toString('binary'));
    console.log(decodedData.id)
    const user = await db.findById(decodedData.id)
    res.render('file.ejs',{user:user})

});
© www.soinside.com 2019 - 2024. All rights reserved.