Я создаю клиент-серверное приложение с аутентификацией 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
});