Node.js: JWT с Express - ошибка «Неверный токен» при проверке - PullRequest
0 голосов
/ 03 ноября 2019

Просто пытаюсь выполнить базовую реализацию подписи и проверки веб-токена JSON на сервере Express, но функция «verify» продолжает выдавать ошибку «Invalid token».

При вставке сгенерированного токена измаршрут «/» в отладчик jwt.io изначально говорит «недопустимая подпись», но когда я проверяю флажок «секретно закодировано в base64», отладчик проверяет подпись, поэтому я попытался кодировать / декодировать base64 свой секрет наПодписание и проверка завершились, но ничего не получалось.

В настоящее время я выполняю запросы, используя расширение кода VS с именем «REST Client», которое позволяет вам делать запросы, используя файл «.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 ...'))

Я ожидаю, что полезная нагрузка (userData) будет возвращена из маршрута '/ verify', но вместо этого получит ошибку "неверный токен".

Обновление : проблема заключалась в том, что я заключил значение моего заголовка авторизации в кавычки, напр. Авторизация: «Носитель [токен]», когда его не должно быть в кавычках, напр. Авторизация: Носитель [токен].

1 Ответ

0 голосов
/ 03 ноября 2019

Проблема заключалась в том, что я заключил значение моего заголовка авторизации в кавычки, напр. Авторизация: «Носитель [токен]», когда его не должно быть в кавычках, напр. Авторизация: Носитель [токен].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...