node.js - 使用 NodeJS 验证 JWT token 字符串,其中包含 'Bearer '

标签 node.js jwt

我以推荐的形式发送标题 Authorization: Bearer <token> .

看起来是token字符串,也就是'Bearer <token>' , 不是 token ,但需要 'Bearer '首先要删除的子字符串以获得 token 字符串本身。

我想知道,从代码中手动删除它是否是一种常规做法,如下所示:

const token = authHeaderValue.replace('Bearer ', '')

在解码和验证之前?

为什么我需要这个 'Bearer '我的自定义应用程序中的字符串?

最佳答案

我使用这种技术。

// Header names in Express are auto-converted to lowercase
let token = req.headers['x-access-token'] || req.headers['authorization']; 

// Remove Bearer from string
token = token.replace(/^Bearer\s+/, "");

if (token) {
  jwt.verify(token, config.secret, (err, decoded) => {
    if (err) {
      return res.json({
        success: false,
        message: 'Token is not valid'
      });
    }
    req.decoded = decoded;
    next();
  });
} else {
  return res.json({
    success: false,
    message: 'Token not provided'
  });
}

在这里,我们使用正则表达式剥离 JWT 前面的任何 Bearer 字符串。如果包含任何空格,它也会被删除。

关于node.js - 使用 NodeJS 验证 JWT token 字符串,其中包含 'Bearer ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39992774/

相关文章:

javascript - Sails.js 查找哪里报错

javascript - Node 未从项目根加载模块

node.js - BitTorrent 协议(protocol)有问题

java - 解密/验证 Firebase token

spring - 不满意的依赖异常 : Error creating bean with name 'securityConfig'

kubernetes - 从服务帐户对受 Google IAP 保护的资源的编程访问被拒绝,并出现无效签名错误

node.js - 如何将MongoDB文档存储在redis中作为缓存并超时刷新

node.js - 我正在尝试将 Sequelize 与 Next JS API 路由一起使用

php - 如何在没有 key 或未经验证的情况下解码 php/laravel 中的 jwt?

azure - 解码 JWT(id_token) 的正确方法是什么?