我是Python/Django世界的新手,剛開始一個我很興奮的大項目。我需要讓我的用戶通過Facebook登錄,我的應用程序具有真正特定的用戶流。我設置了django-allauth,一切都按我需要的方式工作。我已覆蓋LOGIN_REDIRECT_URL,以便我的用戶在登錄時登錄我要登錄的頁面。更改django-allauth render_authentication_error行爲
但是。當用戶打開Facebook登錄對話框,然後在沒有登錄的情況下關閉它,authentication_error.html
模板被allauth.socialaccount.helpers.render_authentication_error
渲染,這不是我想要的行爲。我希望用戶只需重定向到登錄頁面。
是的,我知道我可以簡單地將模板放在我的TEMPLATE_DIRS
中,但是這個url不會相同。
我得出結論我需要一個中間件攔截對http請求的響應。
from django.shortcuts import redirect
class Middleware():
"""
A middleware to override allauth user flow
"""
def __init__(self):
self.url_to_check = "/accounts/facebook/login/token/"
def process_response(self, request, response):
"""
In case of failed faceboook login
"""
if request.path == self.url_to_check and\
not request.user.is_authenticated():
return redirect('/')
return response
但我不確定我的解決方案的效率,也不知道pythonesquitude(我認爲是這個詞)。除了使用中間件或信號之外,還有什麼可以改變默認的django-allauth行爲嗎?
謝謝!
我的意思的URL做的是URL不會是一樣的根我想在登錄錯誤時重定向的網址。無論如何,我選擇了簡單地使用中間件,並將GET請求重定向到/ accounts/*以根URL – 2015-03-11 21:05:17
很酷,很高興您找到了解決方案。 – 2015-03-11 21:06:29