Аутентификация сеанса Django с помощью React

Это не вопрос по кодингу, скорее общий вопрос: в Django, если я использую аутентификацию по умолчанию (сессионную аутентификацию в этом случае), что нужно фронтенду (в моем случае это react) в этом случае? Допустим, я вхожу в систему через браузер (кнопка login на стороне фронтенда), теперь он отправляет данные имени пользователя и пароля на django, django десериализует эти данные, а затем аутентифицируется и входит в систему, теперь проблема в том, что я перенаправляюсь на другую страницу, которую могут просматривать только аутентифицированные пользователи, проблема в том, что я не могу просмотреть ее, просто потому что Django идентифицирует меня как не прошедшего аутентификацию, после небольшого исследования ответ был в том, что у каждой стороны (frontend и backend) разные порты, чтобы заставить это работать frontend должен получить доступ к cookies я предполагаю, есть ли какой-нибудь простой пример для этой проблемы?

Аутентификация Django по умолчанию - это не то, что вам нужно. Вместо этого, стандартная форма аутентификации, используемая фронтендом для аутентификации - это использование JWT. Django rest framework поддерживает эту возможность и расширяет аутентификацию по умолчанию для поддержки этой формы аутентификации.

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

Пока токен действителен, вы просто добавляете его в качестве заголовка во все запросы, которые вы делаете с вашего фронтенда, вот так:

authorization: Bearer [Authentication_TOKEN]

Вот ссылка на Django Rest Framework: https://www.django-rest-framework.org/api-guide/authentication/. Или, если вы не хотите использовать Django Rest framework, вот еще одна ссылка, которая поможет вам с настройкой JWT в Django: https://thinkster.io/tutorials/django-json-api/authentication

Вот ссылка на то, как добавить пользовательские заголовки в axios, одной из популярных клиентских библиотек HTTP на основе Promise: Как установить заголовки и опции в axios?

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