我已使用Django all-auth在我的应用程序中实现了用户帐户管理。我已使用用户名和密码以及facebook连接启用登录。
问题是这样的:
1)用户访问页面http://example.com/page1/并单击登录
2)他被带到http://example.com/accounts/login?next=/page1/
3)当用户使用用户名和密码登录时,用户将被重定向回http://example.com/page1。但如果用户使用Facebook登录,他就会被带到主页。
如何通过Facebook登录获得理想的行为?
答案 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
。