Что такое Refresh Token

Python Middle Без компании
Что такое Refresh Token
Ответы
Refresh Token — это долгоживущий токен, используемый для получения нового Access Token без повторной аутентификации пользователя. Он повышает безопасность, так как Access Token имеет короткий срок жизни, а Refresh Token позволяет его обновлять. **Пример работы:** - Пользователь логинится, получает Access Token (живёт 15 минут) и Refresh Token (живёт 7 дней). - Когда Access Token истекает, клиент отправляет Refresh Token на `/refresh` эндпоинт. - Сервер проверяет Refresh Token и выдаёт новый Access Token. **Пример кода (Flask):** ``` from flask import Flask, jsonify, request import jwt import datetime app = Flask(__name__) SECRET_KEY = "your-secret-key" # Генерация токенов def generate_tokens(user_id): access_token = jwt.encode( {"user_id": user_id, "exp": datetime.datetime.utcnow() + datetime.timedelta(minutes=15)}, SECRET_KEY, ) refresh_token = jwt.encode( {"user_id": user_id, "exp": datetime.datetime.utcnow() + datetime.timedelta(days=7)}, SECRET_KEY, ) return {"access_token": access_token, "refresh_token": refresh_token} # Обновление Access Token @app.route('/refresh', methods=['POST']) def refresh(): refresh_token = request.json.get('refresh_token') try: data = jwt.decode(refresh_token, SECRET_KEY, algorithms=["HS256"]) new_access_token = jwt.encode( {"user_id": data["user_id"], "exp": datetime.datetime.utcnow() + datetime.timedelta(minutes=15)}, SECRET_KEY, ) return jsonify({"access_token": new_access_token}) except jwt.ExpiredSignatureError: return jsonify({"error": "Refresh Token expired"}), 401 ``` **Важно:** Refresh Token должен храниться безопасно (HTTP-only cookie) и отзываться при logout.