Проблема с проверкой json-web-токена в nodejs - PullRequest
1 голос
/ 01 июля 2019

Я действительно смущен ошибкой.Я не могу понять, что происходит.Я пытаюсь проверить токен.

const jwt = require("jsonwebtoken");

jwt.verify(token, config.get("jwtSecret"), (err, decoded) => {
  if (err) {
    console.log(err);
    return res.status(401).json({ msg: "Token is not valid" });
  } else {
    console.log(decoded);
    req.user = decoded.user;
    next();
  }
})

Ошибка:

SyntaxError: Unexpected token . in JSON at position 30
    at JSON.parse (<anonymous>)
    at Object.jwsDecode [as decode] (C:\Users\kira\Desktop\repo\dev_connector\node_modules\jws\lib\verify-stream.js:71:20)
    at module.exports (C:\Users\kira\Desktop\repo\dev_connector\node_modules\jsonwebtoken\decode.js:5:21)
    at Object.module.exports [as verify] (C:\Users\kira\Desktop\repo\dev_connector\node_modules\jsonwebtoken\verify.js:69:20)
    at module.exports (C:\Users\kira\Desktop\repo\dev_connector\middlewares\auth.js:11:7)
    at Layer.handle [as handle_request] (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\layer.js:95:5)
    at C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\index.js:281:22
    at Function.process_params (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\index.js:335:12)
    at next (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\index.js:275:10)
    at Function.handle (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\index.js:174:3)
    at router (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\index.js:47:12)
    at Layer.handle [as handle_request] (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\layer.js:95:5)
    at trim_prefix (C:\Users\kira\Desktop\repo\dev_connector\node_modules\express\lib\router\index.js:317:13)

После того, как я выследил код, я обнаружил проблему в разборе полезной нагрузки.Когда библиотека анализирует полезную нагрузку, значение «iat» недопустимо.Вот откуда возникает ошибка.Что делает библиотека:

Buffer.from(payload, 'base64').toString(encoding)

Что она возвращает:


"{"user":{"id":"userId"},"iat":.��n\���ctLf��x�):�'�8}"

Но я не предоставляю никакой пользовательской опции для поля "iat".Это то, что я автоматически получаю из библиотеки.

Токен:

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