Встречается на собеседованиях • сегодня
Как правильно сделать функцию 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
интервью вопросы и ответы