Невозможно перенаправить на URL клиента с сервера - PullRequest
0 голосов
/ 22 марта 2020

В настоящее время я создаю приложение 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 что более прилично, чем это, то, пожалуйста, поделитесь.

1 Ответ

0 голосов
/ 01 апреля 2020

Хорошо, я выяснил, в чем проблема. При установке прокси в реакции, установите changeOrigin в false. Раньше он работал с changeOrigin, установленным в true, но теперь, когда он изменился, вот исправление.

...