Mediumjwtauth
Что такое JWT и зачем?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
JWT (JSON Web Token) — compact, self-contained токен для аутентификации. Формат: header.payload.signature (base64). Сервер после login выдаёт JWT, клиент отправляет с каждым запросом (Authorization: Bearer), сервер проверяет signature без обращения к DB.
import jwt
from fastapi import Depends
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token')
# Создание токена
token = jwt.encode(
{'sub': user_id, 'exp': datetime.utcnow() + timedelta(hours=1)},
SECRET, algorithm='HS256'
)
async def get_current_user(token: str = Depends(oauth2_scheme)):
payload = jwt.decode(token, SECRET, algorithms=['HS256'])
return payload['sub']- stateless (не нужно хранить сессии), масштабируемость, кросс-доменная;
- Нельзя отозвать до истечения (решение: blacklist, short-lived + refresh token);
- Payload не encrypted (не хранить секреты, можно прочитать);
- Библиотеки: PyJWT, python-jose;
- Альтернативы: sessions (server-side), opaque tokens (random + DB lookup).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.