Я не совсем понимаю прокси и довольно новичок в приложениях стека 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=
. Спасибо всем за помощь.