Description
Bug description
OAuth2Middleware handles exceptions too widely by catching Exception
and masking any error raised in user code.
Because that middleware wraps the whole application and, more importantly, user code, any programming error in user code, like a missing import, or a misspelled variable will be reported as an exception related to Authentication and a 401 http error is emitted, which is confusing and hard to debug because the usual backtrace is not shown. Common fastapi behaviour is emiting a 500 error and an informative traceback on the console.
This makes development quite hard and mask other expected runtime exceptions you might want to handle in upper levels. My current workaround is to edit the library in my development environment by removing that general exception handler. But, on one hand, that is not an easily replicable environment, and secondly, i guess that we will miss some Auth related problem that the original code actually intended to catch.
I propose wrapping code more selectively, keeping user code outside the wrap, and expecting more specific exceptions than Exception.
I use to disable other wide excepts, in paranoid mode, but a shallow look at them i would say they do not interfer with use code. Maybe i am wrong.
fastapi-oauth2/src/fastapi_oauth2/core.py
Line 129 in d22bb4e
fastapi-oauth2/src/fastapi_oauth2/core.py
Line 131 in d22bb4e
Reproduction URL
No response
Reproduction steps
Take the example, in any of the entry points in router_ssr.py
append a line with boo
(an undefined identifier). You get the error message in the browser, if you are not doing rest, but even if you are authenticated the error is a 401. The normal behaviour, that you get if you remove the wide range except is to have a 500 error and a proper backtrace on the server.
Screenshots
Logs
No response
Browsers
Firefox
OS
Linux
Metadata
Metadata
Assignees
Labels
Type
Projects
Status