Не могу получить информацию о пользователе со стороны клиента, используя Passport JS + passport-github + Express + ReactJS - PullRequest
0 голосов
/ 23 марта 2020

Я создаю клиент-серверное приложение с аутентификацией github с использованием пакета passport-github, я только что создал маршруты и стратегию для этого, вот код:

passport.use(
  new GitHubStrategy(
    {
      clientID: process.env.GITHUB_CLIENT_ID,
      clientSecret: process.env.GITHUB_CLIENT_SECRET,
      callbackURL: "/auth/github/callback"
    },
    async (accessToken, refreshToken, profile, done) => {
      console.log(accessToken, refreshToken, profile, done)
      const user = await User.findOne({ githubId: profile.id });
      if (user) {
        done(null, user);
      } else {
        const newUser = await new User({
          githubId: profile.id,
          name: profile.username
        }).save();
        done(null, newUser);
      }
    }
  )
);
module.exports = app => {
  app.get("/", (req, res) => {
    res.send({});
  });

  app.get(
    "/auth/github/callback",
    passport.authenticate("github"),
    async (req, res) => {
      const user = await req.user.save();
      console.log(user); // the user appears well on the logs
      res.redirect("http://localhost:3000/");
    }
  );

  app.get("/auth/github", passport.authenticate("github"));

  app.get("/api/logout", requireLogin, (req, res) => {
    req.logout();
    res.redirect("/");
  });

  app.get("/api/current_user", requireLogin, (req, res) => {
    console.log("req.user");
    console.log(req.user);
    res.send({ user: req.user, test: 1 });
  });
};

Я развернул бэкэнд к heroku, и все идет хорошо, когда я выбираю маршруты из браузера напрямую, но когда я выполняю запросы из клиентского приложения, он не работает и не может получить пользователя из req.user по этому маршруту "/api/current_user".

Вот запрос, который я делаю со стороны клиента:

Axios.get("/api/current_user", {
      headers: { "Content-Type": "application/json" },
      withCredentials: true
    });
...