Как правильно сделать функцию logout при использовании JWT-токена

Python Middle Без компании
Как правильно сделать функцию logout при использовании JWT-токена
Ответы
Для реализации logout с JWT обычно используют черный список токенов (blacklist). Так как JWT самодостаточны и не хранят состояние на сервере, нужно явно помечать недействительные токены. Пример реализации с Flask и PyJWT: ``` 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 ``` Ключевые моменты: - Храним недействительные токены в памяти (в продакшне лучше Redis) - При logout добавляем токен в blacklist - При каждом запросе проверяем, не в blacklist ли токен Альтернативный подход - использовать короткое время жизни токена (например, 15 минут) + refresh токены, но это менее безопасно.