【问题标题】:No authorization token was found in node authorisation在节点授权中未找到授权令牌
【发布时间】:2023-03-25 16:05:01
【问题描述】:

我正在使用 JWT 对后端 api 的请求进行身份验证,这会导致意外错误。

const generateJwt = function(rows) {
var expiry = new Date();
expiry.setDate(expiry.getDate() + 7);

return jwt.sign({
    _id: 1,
    email: rows.email,
    name: rows.username,
    exp: parseInt(expiry.getTime() / 1000),
}, "MY_SECRET"); // DO NOT KEEP YOUR SECRET IN THE CODE!

};

我正在使用上面的代码生成jwt,它生成成功了。

var jwt = require('express-jwt');
var auth = jwt({
secret: 'MY_SECRET',
userProperty: 'payload'
});

var router = express.Router();

router.get('/list',auth, controller.getMerchantList);

用户登录后,我返回 jwt 令牌,并在客户端调用后端时发送令牌。

$http.get('/api/merchant/list',{
  headers: {
    Authorization: 'Bearer '+ authentication.getToken()
  }
});

所生成的令牌:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjEsImVtYWlsIjoia2FzaGlmcm9zaGVuN0BnbWFpbC5jb20iLCJuYW1lIjoiQXJ5YSBTdGFyayIsImV4cCI6MTQ5OTg0NjEzOSwiaWF0IjoxNDk5MjQxMzM5fQ.-CCQwiadozSOuuIk9fil4aJh8D38NwgKYP3HpvClyKw P>

但我仍然得到 401。jwt 令牌在前端。我通过console.log 进行了验证。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你能请。向我们展示生成的令牌(请编辑您的问题并将其添加到那里,而不是用评论回答)
  • 我添加了令牌 :) 提前感谢 :)
  • 我对 express-jwt 不熟悉,但最近有一个类似的案例(令牌存在,但仍然是 401),结果证明是 aud(受众)声明的问题。 (-> stackoverflow.com/questions/44398177/… ) 您的令牌没有 aud 声明。也许这就是问题所在。另见tools.ietf.org/html/rfc7519#section-4.1.3
  • 谢谢 :) 我遵循了一个教程,并且完全按照那里所说的做了:/除此之外其他一切都有效:/ 我将检查如何在 express-jwt 中设置观众 :)跨度>

标签: node.js jwt express-jwt


【解决方案1】:
const Jwt=require('jsonwebtoken');

function generateToken(rows,callback){
    let tokenData={ _id: 1,
    email: rows.email,
    name: rows.username
    }
    return Jwt.sign(tokenData,"YOUR-SECRET-KEY",{ expiresIn: 60 * 60 },function(err,token){
        if(err) callback(err);
        else callback(null,token);
})
}

将此令牌发送给客户端。 从客户端接收标头中的令牌时。您需要使用 Jwt 验证方法验证该令牌。您的身份验证中间件应该从标头中获取令牌并进行验证。

function auth(req,res,callback){
    let token=req.headers.authorization;
    Jwt.verify(token,"YOUR-SECRET-KEY",function(err,decodedData){
        if(err)
            callback(err); // you can send your custom error too
        else
            callback(null,decodedData); 
        }
    )

}

【讨论】:

    猜你喜欢
    • 2016-06-22
    • 2019-12-11
    • 2011-09-28
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2023-03-31
    • 2019-04-03
    相关资源
    最近更新 更多