2017-01-19 5 views
1

Я играю с Flask. Я создал API, используя Flask-Restful и Flask-JWT.

Когда Debug=True в термос, и я не отправить Authorization заголовок, я получаю ответ, как enter image description here

Однако, когда debug=False, ответ возвращается внутренняя ошибка сервера с этой трассировки стека,
Flask-JWT генерирует ошибку, когда Debug = False

[2017-01-19 19:43:10,753] ERROR in app: Exception on /api_0_1/deals [GET] 
Traceback (most recent call last): 
    File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask\app.py", line 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask_restful\__init__.py", line 477, in wrapper 
    resp = resource(*args, **kwargs) 
    File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask_jwt\__init__.py", line 176, in decorator 
    _jwt_required(realm or current_app.config['JWT_DEFAULT_REALM']) 
    File "C:\Users\ARFATS~1\Desktop\Dealflow\venv\lib\site-packages\flask_jwt\__init__.py", line 155, in _jwt_required 
    headers={'WWW-Authenticate': 'JWT realm="%s"' % realm}) 
JWTError: Authorization Required. Request does not contain an access token 


Я бы хотел, чтобы Flask-JWT ответил ответом, который есть, когда Debug = True. Однако я не могу использовать отладку на серверах Production.

Один из способов - использовать мой собственный декоратор jwt_required. Есть ли другой путь?

Кроме того, я был бы рад узнать, чего у меня нет, если таковые имеются.

Благодаря

ответ

0

Вам нужно будет добавить этот параметр в флягу приложение:

app.config['PROPAGATE_EXCEPTIONS'] = True 

При отладке верно, PROPAGATE_EXCEPTIONS также устанавливается истина по умолчанию.

Возможно, попробуйте вместо этого проверить флажок-jwt-extended (https://github.com/vimalloc/flask-jwt-extended), он заботится о PROPAGATE_EXCEPTIONS для вас. Он нацелен на замену заброшенной библиотеки flask-jwt и добавляет некоторые убеждения при работе с JWT (например, обновлять токены, легко добавлять пользовательские данные в JWT, свежие и не свежие токены и т. Д.). Полное раскрытие, я являюсь автором этого расширения.

Cheers.

+0

спасибо. Я обязательно проверю Flask-JWT-extended. –