В настоящее время я создаю приложение React, которое требует входа в систему Google. Поскольку я пытаюсь создать сервер, который впоследствии может также обслуживать PWA, я планирую выполнить аутентификацию с использованием JWT.
Проблема, которая возникает, заключается в том, что я не могу перенаправить свое приложение на URL клиента с сервера.
Например, предположим, что мой клиент работает на localhost: 8100, а сервер работает на localhost: 3100. Я настроил прокси в своем приложении для пересылки всех запросов на / auth / * на сервер. После завершения аутентификации, когда я пытаюсь перенаправить с моего сервера на клиент с помощью res.redirect ("/ handleAuth / $ token"), меня перенаправляют на токен localhost: 3000 / handleAuth / $ вместо localhost: 8100 / handleAuth / $ token
Вот код сервера
const passport = require("passport");
passport.use(
new GoogleStrategy(
{
...keys.google,
callbackURL: "/auth/google/callback",
proxy: true
},
async (accessToken, refreshToken, { _json }, done) => {
done(null, _json);
}
)
);
app.get(
"/auth/google",
passport.authenticate("google", {
session: false,
scope: ["openid", "profile", "email"]
})
);
app.get(
"/auth/google/callback",
passport.authenticate("google", { session: false }),
(req, res) => {
const token= generateToken(req.user);
// Redirecting to serverUrl/handleAuth/${token} instead of clientURL/handleAuth/${token}
res.redirect(`/handleAuth/${token}`)
}
);
Поскольку я использую JWT, я не инициализировал сеанс на сервере.
Если есть подход, при котором я смогу открыть другое дочернее окно, где происходит вход в систему, и я могу отправить ответ как json, который может быть прочитан родительским окном, или любым другим способом, который также может использоваться родными приложениями android / ios что более прилично, чем это, то, пожалуйста, поделитесь.