2014-01-11 28 views
3

我已经使用Django all-auth在我的应用程序中实现了用户帐户管理。我已启用登录使用用户名和密码以及Facebook连接。下一个查询参数不适用于Facebook登录的django allauth

的问题是这样的:

1)用户访问一个页面http://example.com/page1/和点击登录

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

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

我怎样才能获得所需的Facebook登录行为呢?

+0

我刚刚在我自己的项目中使用Facebook OAuth2流程进行了测试,重定向工作正常。您使用OAuth2还是Javascript登录? –

回答

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

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

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

为了让您可以访问request.GET.next适当的一个参数。

+0

该视图由Django-all-auth本身定义。我只是在改变模板。我正在寻找比覆盖视图本身更好的解决方案... –

+0

好的,我们也可以从模板访问请求参数。不知道。我会试试看。 –

+0

这不起作用。即使我指定next =“/ some/url”,它将重定向到默认的url。 –

相关问题