Как работать с API входа в систему в веб-приложении Django

Я уже реализовал список API магазина, включая user api, product api и т.д., используя Rest Framework. User api включает основные методы login/logout/register. Для входа требуется имя пользователя и пароль, поэтому вызов API выглядит как requests.post('api/api_user/login', {username='name', password='password'}). Метод post возвращает токен аутентификации следующим образом: Post result

Вопрос в том, как я могу обработать @login_required в веб-приложении, используя мой API. Идея логина интуитивно понятна, я могу послать post запрос и получить токен, который может быть сохранен в cookies, но Django использует свою собственную систему аутентификации для обработки входа пользователей в представления (декоратор @login_required), так что у меня осталась идея получать токен из cookies в каждом запросе и проверять его на корректность, но правильно ли это? Я ищу примеры или предложения, как это должно быть реализовано.

По умолчанию Django требует аутентификации сессии. Поскольку вы генерируете токен вручную, вам придется аутентифицировать его в каждом API вручную. Для этого вы должны написать пользовательский метод authenticate, который декодирует токен и проверяет детали.

Or

Согласно DRF документации, вы можете использовать класс авторизованных разрешений по умолчанию, если вы использовали DRF аутентификацию.

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

ses_id = request.session.session_key
token = get_token(request)
cookies = {'csrftoken': token, 'sessionid': ses_id}
response = requests.get('http://127.0.0.1:8000/api/api_product/product_types/', cookies=cookies)
Вернуться на верх