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 с
Щоб тренувати сліпий друк, не підглядайте на фізичну клавіатуру.