У меня есть приложение, созданное с Node, Express и MongoDB, где я рендерил все на сервере с помощью движка шаблонов ejs.Я нахожусь в процессе переписывания интерфейса с React.Моя цель - сделать это SPA и использовать бэкэнд в качестве API.Большая часть этого довольно проста, поскольку я просто проксирую свои /api
маршруты к внутреннему порту и возвращаю данные в React с помощью json.Однако я испытываю затруднения при получении аутентификации для работы.
Я использую PassportJs со стратегией Twitter.Вход в систему должен направлять к /auth/twitter
согласно документам.
app.get('/auth/twitter', passport.authenticate('twitter'));
Сервер обрабатывает аутентификацию, но затем перенаправляет пользователя на указанный маршрут следующим образом:
app.get('/auth/twitter/callback',
passport.authenticate('twitter', { successRedirect: '/',
failureRedirect: '/login' }));
Теперь это проблема, потому что мне нужно, чтобы React знал,Пользователь был аутентифицирован, и мне нужно иметь возможность делать последующие запросы к API, используя аутентифицированного пользователя.Я реализовал session-store
на серверной части, которая позволяет пользователю войти в систему в течение определенного периода времени.
Существует ли простое решение, позволяющее мне повторно использовать весь свой серверный код?Возможно использование API Fetch для направления пользователя на /auth/twitter
и получения пользователя и необходимых токенов в качестве объекта json в обещании.Если нет, я был бы признателен за некоторые предложения, чтобы указать мне в правильном направлении.Мой основной источник путаницы заключается в том, что на бэкэнде я просто обрабатывал все с помощью перенаправлений и рендеринга, но из-за того, что клиент сидит на другом порту (и, возможно, на сервере), перенаправление на представление, представленное сервером, больше не является опцией,