Как вернуться на клиентский сервер с прокси-сервера при установке Google oauth в приложении стека Mern - PullRequest
0 голосов
/ 05 марта 2020

Я не совсем понимаю прокси и довольно новичок в приложениях стека Mern. В настоящее время у меня есть настройка прокси в моем клиенте (запущена на порте 3000) для настройки прокси обратно на API (сервер узла / express на порте 5000) с использованием библиотеки npm 'http-proxy-middleware'. Это конфигурация.

const { createProxyMiddleware } = require('http-proxy-middleware');

module.exports = function (app) {
    app.use(
        ['/api', '/auth/google'],
        createProxyMiddleware({
            target: 'http://localhost:5000',
            changeOrigin: true,
        })
    );
};

Для всех моих запросов топора ios, связанных с маршрутом '/api, я могу делать такие вещи, как res.cook ie, res.send, et c чтобы отправить информацию обратно в браузер. Однако в настоящее время я пытаюсь настроить вход в систему с помощью Google, поэтому в моем приложении есть тег <a>, который выглядит следующим образом. Тег используется, чтобы паспорт мог перенаправить пользователя на экран входа в Google.

<a className="formButton googleButton" href="/auth/google">
   <img className='googleLogo' src={GoogleLogo} alt='GoogleLogo' />
   Login with Google
</a>

У меня есть эти две конечные точки на моем express сервере

router.get(
   '/auth/google',
   passport.authenticate('google', {
      scope: ['profile', 'email']
   })
)

router.get(
   '/auth/google/callback',
   passport.authenticate('google'),
   async (req, res) => {
      const token = await req.session.passport.user.generateAuthToken()
      res.cookie('token', token, { httpOnly: true }).redirect('/')
   }
)

Прокси работает и тег переходит к бэкэнду. Затем токен jwt генерируется соответствующим образом, и все работает хорошо. За исключением того, что я перехожу к бэкэнду с помощью тега <a> (который используется для запроса процесса Google oauth), res.cook ie отправит токен на сервер localhost: 5000, а затем я получу перенаправлен на localhost:5000/. Однако я хочу иметь возможность вернуться обратно к клиенту и установить там повара ie. Возможно ли это без явного указания ссылки для перенаправления и добавления токена в URL с ?token=. Спасибо всем за помощь.

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