【问题标题】:Node.js: JWT with Express - "Invalid Token" Error when verifyingNode.js:带有 Express 的 JWT - 验证时出现“无效令牌”错误
【发布时间】:2020-02-28 19:14:46
【问题描述】:

只是尝试使用 Express 服务器对 JSON Web 令牌进行签名和验证的基本实现,但“验证”函数不断返回“无效令牌”错误。

将生成的令牌从“/”路由粘贴到 jwt.io 调试器时,它最初显示“签名无效”,但当我选中“秘密是 base64 编码”复选框时,调试器会验证签名,所以我已经尝试在签名和验证端对我的秘密进行 base64 编码/解码,但没有任何效果。

我目前正在使用名为“REST Client”的 VS 代码扩展名执行请求,它允许您使用“.rest”或“.http”文件发出请求,并且我正在将“Bearer [token]”传递给手动授权标头。我也在使用 Postman 进行测试并收到相同的错误。该应用程序正在按预期通过这两种方法获取标头。

const express = require('express')
const jwt = require('jsonwebtoken')

const app = express()

app.use(express.json())

app.get('/', (req, res) => {
  const user = {
    username: 'test1234',
    email: 'test1234@gmail.com',
    admin: false
  }

  const secret = 'secret'

  jwt.sign(user, secret, (err, token) => {
    req.token = token
    res.send(token)
  })
})

app.get('/verify', (req, res) => {
  // Bearer <token>
  const authHeader = req.headers.authorization
  console.log(authHeader)
  if(authHeader) {
    const token = authHeader.split(' ')[1]
    const secret = 'secret'
    const userData = jwt.verify(token, secret)
    res.send(userData)
  } else {
    return res.send('Please provide a token.')
  }
})

app.listen(3000, () => console.log('Server listening on http://localhost:3000 ...'))

我希望从“/verify”路由返回有效负载 (userData),但会收到“无效令牌”错误。

更新: 问题是我将授权标头的值用引号括起来,例如。授权:“Bearer [token]”,当它不应该用引号引起来时,例如。授权:不记名 [token]。

【问题讨论】:

  • authHeader 在控制台中显示什么?
  • @SuleymanSah "Bearer ",正如变量声明上面的评论中提到的。我目前正在使用名为“REST Client”的 VS 代码扩展名执行请求,该扩展名允许您使用“.rest”或“.http”文件发出请求,并且我正在将“Bearer ”手动传递给授权标头.我也在使用 Postman 进行测试并收到相同的结果。该应用程序正在按预期通过两种方法获取标头。
  • 我刚刚在我的本地尝试了这段代码,它工作正常,/路由返回响应正文中的令牌,我在 /verify 中使用该令牌作为授权标头
  • 这里是 /verify 路由工作的截图:pasteboard.co/IEZYAoy.png
  • 啊!我将 Auth 标头的值作为字符串传递,带有单引号/双引号(授权:“Bearer ”),而它不应该有它们(授权:Bearer )。现在可以了。谢谢@SuleymanSah

标签: node.js express jwt


【解决方案1】:

问题是我将授权标头的值用引号括起来,例如。授权:“Bearer [token]”,当它不应该用引号引起来时,例如。授权:不记名 [token]。

【讨论】:

    猜你喜欢
    • 2017-11-03
    • 2021-02-12
    • 2020-04-19
    • 1970-01-01
    • 2022-12-15
    • 2017-01-05
    • 2017-04-05
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多