我正在将一个PSU添加到Flask应用程序中,到目前为止一切都进展顺利,但我无法弄清楚如何处理PSU引发的异常。一个这样的例外是social.exceptions.AuthCanceled,当用户决定取消身份验证过程时引发。我显然想抓住它并显示一些消息。
我通过创建一个新的中间件找到了一个关于如何在Django中执行此操作的similar question。但是,这种方法似乎只使用在PSU的django_app中定义的middleware.py(而不是在flask_app中)。
我对Flask有一些经验,但之前没有添加中间件,我不确定这是正确的方向。
答案 0 :(得分:1)
<强>更新强>
尝试定义errorhandler
(文档位于http://flask.pocoo.org/docs/api/#flask.Flask.errorhandler),如下所示:
@app.errorhandler(500) # since exceptions will produce 500 errors
def error_handler(error):
if isinstance(error, SocialAuthBaseException):
return redirect('/error')
此行下方的解决方案无效
尝试使用teardown_request
(http://flask.pocoo.org/docs/reqcontext/#teardown-callbacks),就像这样
@app.teardown_request
def teardown_handler(exception=None):
if exception and isinstance(exception, SocialAuthBaseException):
return redirect('/error')