Найти в Дзене
Django для детей

Как подружить Django Rest Framework сессии и React axios

Django Rest Framework (DRF) позволяет легко создавать API-интерфейсы для веб-приложений на Django. DRF также предоставляет механизм аутентификации и авторизации, который может быть использован в сочетании с сессиями Django для обеспечения безопасности API. В этой статье мы рассмотрим, как использовать Django Rest Framework и сессии в React Axios. Аутентификация в Django Rest Framework DRF поддерживает несколько методов аутентификации, включая базовую аутентификацию, токен аутентификацию и JSON Web Tokens (JWT). Для использования сессий Django вместе с DRF мы можем использовать базовую аутентификацию, которая требует только имени пользователя и пароля. Для использования базовой аутентификации в DRF, необходимо добавить BasicAuthentication в настройки аутентификации DRF (в файле settings.py): REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
} Это говорит DRF использовать базовую аутентификацию для всех запросов
Оглавление

Django Rest Framework (DRF) позволяет легко создавать API-интерфейсы для веб-приложений на Django. DRF также предоставляет механизм аутентификации и авторизации, который может быть использован в сочетании с сессиями Django для обеспечения безопасности API.

В этой статье мы рассмотрим, как использовать Django Rest Framework и сессии в React Axios.

Аутентификация в Django Rest Framework

DRF поддерживает несколько методов аутентификации, включая базовую аутентификацию, токен аутентификацию и JSON Web Tokens (JWT). Для использования сессий Django вместе с DRF мы можем использовать базовую аутентификацию, которая требует только имени пользователя и пароля.

Для использования базовой аутентификации в DRF, необходимо добавить BasicAuthentication в настройки аутентификации DRF (в файле settings.py):

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
}

Это говорит DRF использовать базовую аутентификацию для всех запросов к API.

Использование сессий в React с Axios

Для того, чтобы использовать сессии Django в React, необходимо отправлять с каждым запросом токен CSRF в заголовке X-CSRFToken. Токен CSRF можно получить из кук с помощью библиотеки js-cookie.

import axios from 'axios';
import Cookies from 'js-cookie';

axios.defaults.xsrfCookieName = 'csrftoken';
axios.defaults.xsrfHeaderName = 'X-CSRFToken';

const csrftoken = Cookies.get('csrftoken');

axios.get('/api/my_endpoint', {
headers: {
'X-CSRFToken': csrftoken
}
})
.then(response => {
// Обработка успешного ответа })
.catch(error => {
// Обработка ошибки });
}

В этом примере мы используем axios для выполнения GET-запроса к /api/my_endpoint. Мы также устанавливаем токен CSRF в заголовке X-CSRFToken с помощью axios.defaults.xsrfHeaderName.

Использование сессий в Django Rest Framework

Для использования сессий в Django Rest Framework необходимо добавить SessionAuthentication в настройки аутентификации DRF:

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.SessionAuthentication',
],
}

Это говорит DRF использовать сессии Django для аутентификации запросов к API.

Заключение

Использование сессий Django в сочетании с Django Rest Framework и React Axios может быть полезным при создании безопасных веб-приложений. Сессии Django могут быть использованы для хранения данных пользователей и обеспечения безопасности API, а React Axios может быть использован для выполнения запросов к API.