2014-02-23 52 views
0

我正在將PSU添加到Flask應用程序中,並且目前爲止所有工作都非常順利,但我無法弄清楚如何處理由PSU引發的異常。其中一個例外是social.exceptions.AuthCanceled,當用戶決定取消auth過程時引發。我顯然想要抓住並顯示一些信息。使用Flask時處理python-social-auth異常的正確方法是什麼?

我發現一個similar question關於如何在Django中創建一個新的中間件。然而,這種方法似乎只使用在PSU的django_app(而不是在flask_app)中定義的middleware.py。

我對Flask有一些經驗,但之前沒有添加中間件,我不確定這是否是正確的方向。

回答

1

UPDATE

嘗試(在http://flask.pocoo.org/docs/api/#flask.Flask.errorhandler文檔)限定errorhandler,像這樣:

@app.errorhandler(500) # since exceptions will produce 500 errors 
def error_handler(error): 
    if isinstance(error, SocialAuthBaseException): 
     return redirect('/error') 

這條線之下的溶液將不起作用


與嘗試teardown_requesthttp://flask.pocoo.org/docs/reqcontext/#teardown-callbacks),像這樣

@app.teardown_request 
def teardown_handler(exception=None): 
    if exception and isinstance(exception, SocialAuthBaseException): 
     return redirect('/error') 
+0

感謝您的回覆!我試了一下,它進入'if',但似乎忽略了'return'。顯然'teardown_request'函數不允許修改請求,並且它們的返回值被忽略_(http://flask.pocoo.org/docs/api/#flask.Flask.teardown_request)。 –

+0

更新的方法就像一個魅力。對於其他人來說,不要忘記在你的配置文件中設置DEBUG = False和TEST = False來測試它,否則顯示的異常和錯誤處理程序從不調用。另外請注意,您不能在錯誤處理程序中「閃爍」,但您當然可以重定向到一個可以執行此操作的頁面。 –

+0

我在文檔中添加了關於它的章節http://psa.matiasaguirre.net/docs/configuration/flask.html#exceptions-handling – omab

相關問題