Jwt token expiration expiration обработка, вызывая 500 ошибок в Flask-jwt-exted и chlask-restfulPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Jwt token expiration expiration обработка, вызывая 500 ошибок в Flask-jwt-exted и chlask-restful

Сообщение Anonymous »

Проблема: < /strong>
Я строю бэкэнд колбы, используя фарбовую, флас-JWT-расширенную и Postgresql. При тестировании истечения срока действия токена JWT через Postman токены с истекшим сроком постоянно приводят к 500 внутренней ошибке сервера вместо несанкционированного ответа 401. />Currently, an expired token results in this error:
{"message": "Internal Server Error"}
Server Logs Traceback:
jwt.exceptions.ExpiredSignatureError: Signature has expired

Relevent Code:
инициализация приложения приложения ( init .py)
from flask import Flask, jsonify
from flask_jwt_extended import JWTManager
from flask_restful import Api
from flask_cors import CORS
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
import os
from dotenv import load_dotenv

load_dotenv()

app = Flask(__name__)
CORS(app, supports_credentials=True)

app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL')
app.config['JWT_SECRET_KEY'] = os.getenv('JWT_SECRET_KEY', 'temporary_secret')

jwt = JWTManager(app)
db = SQLAlchemy(app)
api = Api(app)
migrate = Migrate(app, db)

# JWT error handlers
@jwt.expired_token_loader
def expired_token_callback(jwt_header, jwt_payload):
return jsonify({"message": "Token has expired"}), 401

@jwt.invalid_token_loader
def invalid_token_callback(error):
return jsonify({"message": "Invalid token"}), 401

@jwt.unauthorized_loader
def unauthorized_callback(error):
return jsonify({"message": "Missing or invalid Authorization header"}), 401

if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
< /code>

outrce resource (auth_resource.py) < /strong> < /p>
from flask_restful import Resource, reqparse
from flask_jwt_extended import (
create_access_token, create_refresh_token, jwt_required, get_jwt_identity
)
from werkzeug.security import check_password_hash
from datetime import timedelta
from app.models import User

parser = reqparse.RequestParser()
parser.add_argument('username', required=True)
parser.add_argument('password', required=True)

class LoginResource(Resource):
def post(self):
data = parser.parse_args()
user = User.query.filter_by(username=data['username']).first()

if user and check_password_hash(user.password_hash, data['password']):
access_token = create_access_token(identity=user.id, expires_delta=timedelta(seconds=30))
refresh_token = create_refresh_token(identity=user.id, expires_delta=timedelta(minutes=2))
return {'access_token': access_token, 'refresh_token': refresh_token}, 200
return {'msg': 'Invalid credentials'}, 401

class ProtectedResource(Resource):
@jwt_required()
def get(self):
identity = get_jwt_identity()
return {'logged_in_as': identity}, 200
< /code>

Подход и результаты тестирования (почтальон) < /strong>
login Works (200 OK), возвращает токены. /> Ожидаемое: 401 {"Сообщение": "Токен истек"} < /p>
Фактическое: 500 Ошибка внутреннего сервера < /p>

журналы сервера: < /strong> < /p>

.ERROR in app: Exception on /api/protected [GET]
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 917, in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.11/site-packages/flask/app.py", line 902, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
File "/usr/local/lib/python3.11/site-packages/flask_restful/__init__.py", line 604, in dispatch_request
resp = meth(*args, **kwargs)
File "/usr/local/lib/python3.11/site-packages/flask_jwt_extended/view_decorators.py", line 167, in decorator
verify_jwt_in_request(
File "/usr/local/lib/python3.11/site-packages/flask_jwt_extended/utils.py", line 128, in decode_token
return jwt_manager._decode_jwt_from_config(encoded_token, csrf_value, allow_expired)
File "/usr/local/lib/python3.11/site-packages/jwt/api_jwt.py", line 363, in _validate_exp
raise ExpiredSignatureError("Signature has expired")
jwt.exceptions.ExpiredSignatureError: Signature has expired
< /code>

то, что я пробовал без успеха: < /strong>
реализованные обработки глобальных ошибок JWT (expired_token_loader). < /p>
Упрощенная правильная регистрация jwt callbacts. глобально). < /p>
Полностью восстановленные контейнеры Docker Несколько раз для обеспечения свежего развертывания. < /p>

Вопросы < /strong>
Почему мой глобальный не истекает flask_jwt_extened с Flask_Restful, который предотвращает глобальные обработчики от запуска? Последний
flask-jwt-extended: последний
wrash-restful: последний
база данных Postgresql (Dockerized)
Docker Compose Setup для Backend, фронтана и Database

Подробнее здесь: https://stackoverflow.com/questions/795 ... -and-flask
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Jwt token expiration expiration обработка, вызывая 500 ошибок в Flask-jwt-exted и chlask-restful
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Jwt token expiration expiration обработка, вызывая 500 ошибок в Flask-jwt-exted и chlask-restful
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Jwt token expiration expiration обработка, вызывая 500 ошибок в Flask-jwt-exted и chlask-restful
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Jwt token expiration expiration обработка, вызывая 500 ошибок в Flask-jwt-exted и chlask-restful
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • *** Решенное *** jwt токеновое срок действия обработки, вызвав 500 ошибок в Flask-jwt-расширенном и хрупком
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»