对于facebook登录,下一个查询参数不适用于django allauth

时间:2014-01-11 15:14:47

标签: python django django-allauth

我已使用Django all-auth在我的应用程序中实现了用户帐户管理。我已使用用户名和密码以及facebook连接启用登录。

问题是这样的:

1)用户访问页面http://example.com/page1/并单击登录

2)他被带到http://example.com/accounts/login?next=/page1/

3)当用户使用用户名和密码登录时,用户将被重定向回http://example.com/page1。但如果用户使用Facebook登录,他就会被带到主页。

如何通过Facebook登录获得理想的行为?

2 个答案:

答案 0 :(得分:3)

您需要覆盖django-allauth的get_login_redirect_url方法。

为此,将DefaultAccountAdapter类继承为

from allauth.account.adapter import DefaultAccountAdapter

class MyAccountAdapter(DefaultAccountAdapter):
    def get_login_redirect_url(self, request):
        # get the next parameter from request object and return the url 

并在settings.py上进行更改

ADAPTER = "APPNAME.FILENAME.MyAccountAdapter"
ACCOUNT_ADAPTER = "APPNAME.FILENAME.MyAccountAdapter"

这应该有效!

答案 1 :(得分:1)

您如何生成Facebook登录链接?很可能你没有在那里指出下一个参数。 allauth documentation给出了这个例子:

<a href="{% provider_login_url "openid" openid="..." next="/success/url/" %}">Google</a>

要获得正确的下一个参数,您可以访问request.GET.next