express промежуточное ПО не отправляет ответ - PullRequest
0 голосов
/ 08 марта 2020

У меня есть маршрут удаления, который имеет 2 функции промежуточного программного обеспечения Authcontroller.protect и authcontroller.restrictTo («admin,« lead-guide ») имеет надлежащую «роль» для выполнения этой задачи, и если они этого не делают, express предполагается не отправлять 403. Я вижу, что express фактически никогда не отправляет ответ. Он входит в оператор if (я вижу консоль успешно печатает fialure), а затем просто пропускает отправку ответа.

exports.restrictTo = (...roles) => {
  return (req, res, next) => {
    console.log(req.user.role);
    if (!roles.includes(req.user.role)) {
      console.log("failure");
      return res.status(403).json({
        status: fail,
        message: "you do not have permission to perform this action"
      });
      console.log(req, res);
    }
    next();
  };
};

1 Ответ

0 голосов
/ 08 марта 2020

Вставьте try/catch в свою внутреннюю функцию и посмотрите, будет ли выброшено исключение.

Если посмотреть на ваш код, если переменная fail (для которой вы не показываете определение) не определена, то это вызовет исключение и не позволит выполнить res.json().

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