Встречается на 1% собеседований по Python
Как правильно сделать функцию logout при использовании JWT-токена
Для реализации logout с JWT обычно используют черный список токенов (blacklist). Так как JWT самодостаточны и не хранят состояние на сервере, нужно явно помечать недействительные токены.
Пример реализации с Flask и PyJWT:
python
from flask import request, jsonify
import jwt
from datetime import datetime, timedelta
blacklisted_tokens = set()
SECRET_KEY = 'your-secret-key'
def logout():
token = request.headers.get('Authorization').split()[1]
blacklisted_tokens.add(token)
return jsonify({"message": "Successfully logged out"}), 200
def verify_token(token):
if token in blacklisted_tokens:
return False
try:
jwt.decode(token, SECRET_KEY, algorithms=['HS256'])
return True
except:
return False
text
Ключевые моменты:
1. Храним недействительные токены в памяти (в продакшне лучше Redis)
2. При logout добавляем токен в blacklist
3. При каждом запросе проверяем, не в blacklist ли токен
Альтернативный подход - использовать короткое время жизни токена (например, 15 минут) + refresh токены, но это менее безопасно.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
Похожие вопросы
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы