Аутентификация токена JWT Неверный токен с Nodejs - PullRequest
0 голосов
/ 02 августа 2020

Я работаю с NodeJs с аутентификацией токена с использованием jwt (jsonwebtoken).

Я пытаюсь добавить аутентификацию в конечную точку, чтобы проверить правильность предоставленного токена, следующий это мои методы:

async function create(req, res) {
  try {
    const token = req.headers["access-token"];
    console.log("token:" + token);
    console.log("decodedToken:", req.decoded);
    return res.status(200).send(req.body.comments);
  } catch (error) {}
}

 async function verifyToken(req, res, next) {
      const tokenHeader = req.headers["access-token"];
      const token = tokenHeader.split(" ")[1];
      console.log("tokenVerify:", tokenHeader.split(" ")[1]);
      console.log("tokenn:", token);

  if (token) {
    jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, decoded) => {
      if (err) {
        return res.json({ mensaje: "Invalid Token." });
      } else {
        req.decoded = decoded;
        next();
      }
    });
  } else {
    res.send({
      mensaje: "No provided token.",
    });
  }
}

module.exports = {
  create,
  verifyToken,
};

Это мой код маршрута:

app.post("/comment/", verifyToken, commentsController.create);

Но я всегда получаю сообщение Invalid Token..

Это способ как я генерирую токен, когда пользователь пытается войти в приложение:

function generateAccessToken(user) {
  return jwt.sign(user, process.env.ACCESS_TOKEN_SECRET, { expiresIn: 1440 });
}

Я передаю токен через заголовки в следующем формате:

Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.... следующие символы.

1 Ответ

0 голосов
/ 02 августа 2020

Похоже, проблема в том, что вы неправильно удаляете токен из заголовка. Вот что у вас есть:

async function verifyToken(req, res, next) {
  const token = req.headers["access-token"];
  console.log("tokenVerify:", token.split(" ")[1]);

  if (token) {
    jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, decoded) => {

Обратите внимание, что вы удаляете токен в console.log, но не в фактическом коде. Итак, вот что вам нужно:

async function verifyToken(req, res, next) {
  const tokenHeader = req.headers["access-token"];
  const token = tokenHeader.split(" ")[1]);
  console.log("tokenVerify:", token);

  if (token) {
    jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, decoded) => {
...