Django allauth + React google social login

У меня django-allauth хорошо работает с социальным логином Google, когда я напрямую обращаюсь к бэкэнду. Теперь я задаюсь вопросом, как использовать это из (или заменить на) моего React-фронтенда.

Изначально моим бэкендом был FastAPI и fastapi-users, и он достаточно хорошо работал с React. То есть в React у меня есть хук useAuth, который в свою очередь опирается на useContext, а моя кнопка React GET получала auth_url из /auth/google/authorize бэкенда, перенаправляла меня, использовала /auth/google/callback и в итоге сохраняла токен в куки.

С появлением Django мне стало интересно, каким должен быть общий подход. Должен ли я:

  • Вариант A: пусть моя кнопка React переводит меня на /accounts/google/login django-allauth, где пользователь завершает цикл входа и в итоге перенаправляется обратно на /profile моего React'а? Пока что проблема в том, что даже если бэкенд-часть google, кажется, работает, при перенаправлении React жалуется, что токен пуст. Пока что это не удивительно, поскольку я еще не отправляю токен обратно во фронтенд. Но я не знаю, стоит ли продолжать работать с этим подходом или лучше...
  • Вариант B: попытаться воссоздать поток /auth/google/authorize и /auth/google/callback, который у меня был при работе с FastAPI, но теперь с использованием Django. В частности, я использую django-ninja, а большинство учебников используют Django DRF, и хотя я, вероятно, могу имитировать шаги независимо от этого, я не знаю, стоит ли пробовать этот путь, если он больше не нужен, учитывая переход на django-allauth? По-видимому, мне придется передавать токен фронтенда бэкенду, что, как мне кажется, противоречит тому, что я сейчас имею, работая с django-allauth. Также я встречал упоминания (например, здесь и здесь) о react-google-login, но, возможно, сейчас он устарел или не нужен?

Являются ли эти два рабочих процесса одинаково правильными или один из них предпочтительнее другого? Является ли вариант A более безопасным? С моей точки зрения, кажется, что в варианте A я бы воспользовался преимуществами уже функционирующей аутентификации, но я не знаю.

Вернуться на верх