isAuthenticated () возвращает false после успешного перенаправления - PullRequest
1 голос
/ 11 апреля 2020

Из того, что я могу сделать после выхода из внутреннего порта: 5000 и перенаправления на порт: 3000 (домашняя страница моего веб-интерфейса), сеанс аутентификации прекращается.

Что я делаю: щелчок по Войдите в кнопку Google, войдите в систему с хорошей учетной записью, перенаправьте на мою домашнюю страницу внешнего интерфейса, где выполняется запрос на выборку и получает информацию о профиле пользователя, вошедшего в систему.

Я выполняю вход с помощью Google oAuth с паспортом. js. Пн goose сохраняет информацию о сеансе и профиле пользователя. req.isAuthenticated () должен быть равен true на всех маршрутах до выхода из системы. Вместо этого все работает до самой последней точки, где я повторно обращаюсь к домашней странице внешнего интерфейса.

app.get(
  "/auth/google",
  passport.authenticate("google", { scope: ["profile", "email"] })
);

app.get(
  "/auth/google/login",
  passport.authenticate("google", { failureRedirect: "/new" }),
  (req, res) => {
    console.log(` Authentication Status: ${req.isAuthenticated()}`); // READS AS TRUE
    console.log(` User? : ${req.user}`); /// SHOWS USER INFO
    console.log("end of user status before redirect.");
    res.redirect("http://localhost:3000/");
  }
);

ПРОБЛЕМА:

О последней функции из того, что Я могу сказать, что все работает как положено вплоть до res.redirect. если я не введу команду req.logout (), она должна быть в состоянии отслеживать мою сессию, а на бэкэнде req.isAuthenticated должен иметь значение true. Вместо этого в других маршрутах, где у меня есть настройка условных выражений, req.isAuthenticated читает false.

// quick fetch request I run on front end to show user as logged in and profile info.
app.get("/getuser", (req, res) => {
  console.log("user CHECK :", req.user); // READS UNDEFINED HERE
  console.log(`is authenticated:`, req.isAuthenticated()); // READS FALSE HERE
  if (req.isAuthenticated()) {
    const user = req.user;
    console.log("user:", req.user);
    res.json({ user: user, isAuthenticated: true });
  } else {
    const user = false;
    console.log("user:", req.user);
    res.json({ user: false, isAuthenticated: false });
  }
});

Становится странным ...

Мой браузер получает готовый файл connect.sid ie, и моя база данных сохраняет пользователя и сессия.

из chrome файлов cookie браузера на localhost:

from chrome browser cookies on localhost

снимок экрана созданной сохраненной учетной записи из сеанса в моей базе данных

screenshot of saved account created from session in my database

Я уже проверил несколько потоков переполнения стека на этом. Все они, похоже, не помогли мне.

1 Ответ

1 голос
/ 11 апреля 2020

Мой инцидент был связан с портами, а не сессией. Мое приложение реагирования работает на порту 3000, настроив прокси в моем пакете. Файл json с использованием синтаксиса "proxy":"http://localhost:5000" Я смог взять все свои маршруты и преобразовать их в мои маршруты express, а затем вернуть авторизованный URL-адрес перенаправления. ,

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