Встречается на собеседованиях • сегодня

Как правильно сделать функцию 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 токены, но это менее безопасно.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы