@takoyklasnii

Как сделать middleware jwt?

При регистрации у меня такой код:
const userRegistration = (req, res) => {
  try {
    if (req.body && req.body.login) {
      User.findOne({ where: { login: req.body.login } }).then(r => {
        if (r === null) {
          const hashedPassword = bcrypt.hashSync(req.body.password, 10);
          const token = jwt.sign({ login: req.body.login }, "secret", {
            expiresIn: "1h"
          });
          User.create({
            login: req.body.login,
            username: req.body.username,
            password: hashedPassword,
            role: "user"
          }).then(() => {
            res.json({
              status: true,
              user: {
                login: req.body.login,
                username: req.body.username,
                token: token,
                role: "user"
              },
              message: "User was created!"
            });
          });
        } else {
          res.json({
            message: "Body data already taken!"
          });
        }
      });
    } else {
      res.json({
        message: "Body request is incorrect!"
      });
    }
  } catch (error) {
    res.json({
      message: error
    });
  }
};

Я получаю токен jwt.
Вот мой middleware:
const ProtectedRoute = (req, res, next) => {
  let token = req.headers["x-access-token"] || req.headers["authorization"];
  if (token) {
    if (token.substr(0, 6) === "Bearer") {
      token = token.slice(7, token.length);
    }
    jwt.verify(token, secret, (err, decoded) => {
      console.log(decoded);
      req.login = decoded;
      next();
    });
  } else {
    res.json({
      message: "Invalid token!"
    });
  }
};


Нужно ли мне в middleware делать запрос к bd и проверять есть ли такой юзер ?
Стоит ли мне записывать все данные (логин, юзернейм, пароль) и генерировать токен и далее так же проверять в middleware данные ?
  • Вопрос задан
  • 553 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Nc_Soft
Да, лучше в middleware проверять существование юзера.
И на async/await лучше перейти, а то лапша из промисов, без слез не взглянешь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы