Проверка подлинности Passport JS, возвращающая ложь при входе в систему с внешней стороны - PullRequest
0 голосов
/ 03 февраля 2019

В настоящее время я занимаюсь разработкой веб-сайта с использованием стека MERS.Я использую express-session и passport.js для своей внутренней аутентификации.Когда я пытаюсь войти с моего внутреннего сервера, API работает нормально.Тем не менее, когда я пытаюсь отправить запрос POST от моей клиентской стороны (React), он не проходит проверку подлинности.запрос идентичен.Одна вещь, которую я замечаю, это то, что когда я не помещаю промежуточное ПО аутентификации в мой API, мой интерфейс получает данные после перенаправления в API;когда я ставлю промежуточное ПО, происходит обратное.

//This is my POST code
router.post(
  "/userLogin",
  passport.authenticate("local", {
    successRedirect: "/api/user",
    failureRedirect: "/api/user/asktologin"
  }),
  (req, res) => {}
);

//This is my middleware
const isLoggedIn = (req, res, next) => {
  if (req.isAuthenticated()) {
    console.log(req.isAuthenticated);
  } else {
    console.log(req);
  }
};

1 Ответ

0 голосов
/ 03 февраля 2019

Ваше промежуточное ПО isLoggedIn не вызывает функцию next в стеке.Это должно выглядеть следующим образом

const authenticationMiddleware = (req, res, next) => {
  if (req.isAuthenticated()) {
    console.log(req.isAuthenticated);
    next()
  } else {
    console.log(req);
    res.send(400);
  }
};

// Then you configure it like so
app.use(authenticationMiddleware);

// Your "router" config goes here
post("/userLogin",
  passport.authenticate("local", {
    successRedirect: "/api/user",
    failureRedirect: "/api/user/asktologin"
  }),
  (req, res) => {
    // Do stuff
  }
);

Для получения более подробной информации о том, как использовать промежуточное программное обеспечение, обязательно ознакомьтесь с документами .

...