Могу ли я передать декодированные данные JWT в объект req express.js? - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь найти решение, в котором я могу проверить промежуточное ПО на маршруте, который проверяет JWT. Поскольку эта проверка декодирует ее, а также проверяет, я хотел бы передать декодированные данные по маршруту без необходимости повторного декодирования. Смотрите мое текущее решение ниже:

  //route.js
  app.get("/donations", helpers.protected, (req, res) => {
    console.log(req.user)
  });





  //helper.js
module.exports.protected = (req, res, next) => {
    const jwt_token = req.cookies["auth"];

  jwt.verify(jwt_token, nconf.get("jwt:secret"), (err, decoded) => {
    if (err || !decoded) {
      logErr(error.INVALID_JWT, err, req);
      return res.redirect("/");
    } else {
      req.user = decoded;
      return next();
    }
 });
};

Цель состоит в том, чтобы сделать код простым и чистым в маршрутах, поместив логику проверки в промежуточную функцию. Я хочу быть в состоянии предотвратить необходимость декодирования дважды, но также быть в безопасности. Могу ли я использовать req.user = decoded; как я показал выше? Можно ли когда-нибудь изменить req.user или поместить его в HTTP-запрос от клиента? Будет использовать res.locals.user = decoded; быть лучше или хуже в использовании?

Спасибо

1 Ответ

0 голосов
/ 26 июня 2018

Да, вы передаете decoded в req

НО

Я бы не стал устанавливать декодирование на req.user просто потому, что req.user связано с пользователем сеанса. Просто используйте req.decoded или что-то еще. Вам нужно использовать res.locals только тогда, когда вам нужно глобально установить объект для движка рендеринга, который вы используете.

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