我正在这个项目中,目标是创建一个学习平台及其完善的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并显示相应的信息。
解决方案:
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})
});