【问题标题】:How to decode a token with jwt如何使用 jwt 解码令牌
【发布时间】:2020-02-02 07:59:40
【问题描述】:

当我尝试验证用户的令牌时,我总是收到错误 500。

function verifyToken(req, res, next) {
if(!req.headers.authorization){
    return res.status(401).send('Unauthorized request')
}
let token = req.headers.authorization.split(' ')[1]
if (token === 'null') {
    return res.status(401).send('Unauthorized request')
}
let payload = jwt.verify(token, 'secretkey')
if (!payload) {
    return res.status(401).send('Unauthorized request')
}
req.userId = payload.subject
next()

我从环绕开始尝试捕获有效负载,我想我知道 jwt 操作已经改变,现在需要它来工作,但我不明白为什么它不起作用。看来他不能检查比赛。

function verifyToken(req, res, next) {
if(!req.headers.authorization){
    return res.status(401).send('Unauthorized request')
}
let token = req.headers.authorization.split(' ')[1]
if (token === 'null') {
    return res.status(401).send('Unauthorized request')
}
try {
    let payload = jwt.verify(token, 'secretkey')
    req.userId = payload.subject
    next()
} catch (error) {
    return res.status(401).send('Unauthorized request')
}  

}

【问题讨论】:

    标签: javascript node.js angular jwt


    【解决方案1】:

    您可以使用jwt-decode /npm jwt-decode 库进行解码。来自文档的示例:

    import jwt_decode from 'jwt-decode';
    
    var token = 'eyJ0eXAiO.../// jwt token';
    var decoded = jwt_decode(token);
    console.log(decoded);
    

    其他库要检查angular2-jwt

    【讨论】:

    • 我把“let payload = jwt.verify(token, 'secretkey')”改成“let payload = jwt_decode(token)”,现在可以了,谢谢!但是 jwt_decode 如何知道解码令牌的密钥?它没有在任何地方提及
    • jwt 的有效负载以 base64 编码 - 以缩短长字符串。你可以在jwt.io试试看
    猜你喜欢
    • 2021-09-10
    • 2016-11-15
    • 2021-12-30
    • 2018-10-05
    • 1970-01-01
    • 2019-05-19
    • 2017-04-05
    • 2021-10-23
    相关资源
    最近更新 更多