JWT (JSON Web Token) — это вторая схема аутентификации, которую предлагает API наряду с токен-авторизацией. Главное отличие: вместо одного токена вы получаете два.
- Access token — короткоживущий (минуты или часы). Отправляете его с каждым запросом.
- Refresh token — долгоживущий (дни). Используется только для получения нового access token, когда старый истекает.
Зачем два токена? Если access token украдут, им можно воспользоваться лишь короткое время. Refresh token остаётся в безопасности, так как путешествует реже — только при обновлении доступа.
Формат заголовка Authorization для JWT использует 'Bearer' вместо 'Token':
```
Authorization: Bearer <access_token>
```
В requests:
```python
import requests
BASE_URL = 'https://apilearn.tukas.dev'
access_token = '...'
headers = {'Authorization': f'Bearer {access_token}'}
response = requests.get(f'{BASE_URL}/api/users/profile/', headers=headers)
```
Когда access token истекает, не нужно снова запрашивать учётные данные у пользователя. Отправьте refresh token на эндпоинт обновления и получите новый access token:
```python
response = requests.post(
f'{BASE_URL}/api/auth/jwt/refresh/',
json={'refresh': refresh_token},
)
new_access = response.json()['access']
```
Токен-авторизация против JWT — когда что выбирать:
- Токен-авторизация проще: один токен, понятный заголовок, без управления сроком действия.
- JWT безопаснее для долгосрочных сессий: access token быстро истекает, снижая риск при перехвате. Стандарт в современных мобильных приложениях и SPA.
Для скриптов и кратковременной автоматизации токен-авторизации часто достаточно. JWT становится важным, когда вы строите что-то, что остаётся аутентифицированным дни или недели.
Получите пару JWT, затем сразу используйте refresh token для получения нового access token через POST /api/auth/jwt/refresh/. Выведите новый access token (первые 30 символов).
import requests
BASE_URL = 'https://apilearn.tukas.dev'
# 1. Получите начальную пару токенов
# 2. Используйте refresh token для получения нового access token
# 3. Выведите первые 30 символов нового access token
Напишите функцию refresh_access(refresh_token), которая возвращает новый access token через эндпоинт обновления. Затем напишите небольшой скрипт, который получает начальную пару и сразу обновляет access token, выводя оба (первые 20 символов каждого).
import requests
BASE_URL = 'https://apilearn.tukas.dev'
def refresh_access(refresh_token):
# POST к /api/auth/jwt/refresh/ и возврат нового access token
pass
# Получите начальную пару, затем обновите
Мы используем необходимые cookies для работы сайта. С вашего разрешения мы также можем сохранять настройки сайта и использовать аналитические и рекламные cookies, чтобы понимать использование сайта и поддерживать развитие проекта.
* Вы всегда можете изменить свой выбор в настройках сайта.
Выберите категории cookies
Настройки аналитики
Можно отключить аналитику использования платформы. Также можно отправить в Google Analytics запрос на удаление данных об использовании этого сайта, связанных с этим браузером.
Учебный workspace
Учитесь, читая, запуская код и решая задачи.
Практикуйте программирование с пояснениями тем, упражнениями, инструментами browser IDE, проверкой regex и тренировкой печати кода в одном workspace.
Открывайте инструменты во вкладках.Упражнения, IDE-инструменты и тренажеры остаются доступными как вкладки сайта.
Переключайтесь без потери контекста.Переходите между пояснениями, кодом и утилитами, сохраняя свое место.
Используйте sidebar как карту.Левые панели содержат навигацию, настройки, файлы, libraries и управление инструментами.
PythonJavaScriptSQLite
Одна IDE, три практичных режима
Python в браузере.Запускайте небольшие скрипты, пробуйте библиотеки и тренируйте API-запросы без установки.
JavaScript для быстрых экспериментов.Проверяйте код для браузера и сравнивайте идеи рядом с учебными материалами.
SQLite для практики с данными.Открывайте обозреватель базы данных, изучайте таблицы, пишите запросы и учитесь SQL локально.
ТемаIDE
Работайте рядом в split tabs
Держите инструкции перед глазами.Откройте упражнение или справочную страницу рядом с IDE, вместо постоянных переключений.
Сравнивайте инструменты во время обучения.Размещайте проверки regex, пояснения и эксперименты с кодом рядом, когда это нужно для задачи.
Закройте split, когда закончите.Workspace вернётся к одной сфокусированной вкладке, а открытые вкладки сайта останутся доступны.
Тренажер слепой печати кода
Или просто текста
Тренажер рассчитан на физическую клавиатуру.Откройте этот раздел на ноутбуке или компьютере с широким экраном. На телефоне тренировка слепой печати не будет корректной.
Скорость: 0 зн/мин
0 слов/мин
Лучшая скорость (60с): 0 зн/мин
0 слов/мин
Ошибки: 0
Общее время: 0.0 с
Для активации режима слепого набора не подсматривайте на физическую клавиатуру.