Django社交认证未重定向到下一个URL?

6 投票
2 回答
3179 浏览
提问于 2025-04-29 19:30

我想在登录后重定向到同一个页面。但是Django Social Auth没有进行重定向。它重定向到了"/pins/#_=_

这是HTML代码:

<a href="{% url socialauth_begin 'facebook' %}?next={{ request.get_full_path }}">Facebook Login</a>

这是Urls.py文件:

url(r'^$', 'pinry.core.views.home', name='home')

这是Views.py文件:

def home(request):
    if request.user.is_authenticated():
        if 'next' in request.GET:
            return HttpResponseRedirect(request.GET['next'])
        else:    
            return HttpResponseRedirect('/pins'))
    return HttpResponseRedirect(reverse('core:concept'))

这是Settings.py文件:

LOGIN_URL          = '/login-form/'
LOGIN_REDIRECT_URL = '/'
LOGIN_ERROR_URL    = '/login-error/'
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_NEW_USER_REDIRECT_URL = '/pins/'
SOCIAL_AUTH_NEW_ASSOCIATION_REDIRECT_URL = '/new-association-redirect-url/'
SOCIAL_AUTH_DISCONNECT_REDIRECT_URL = '/account-disconnected-redirect-url/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/new-error-url/'

SOCIAL_AUTH_COMPLETE_URL_NAME  = 'socialauth_complete'
SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete'
SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user'

TEMPLATE_CONTEXT_PROCESSORS = (
...
    "social_auth.context_processors.social_auth_by_name_backends",
    'social_auth.context_processors.social_auth_backends',
    'social_auth.context_processors.social_auth_by_type_backends',
    'social_auth.context_processors.social_auth_login_redirect',
    "django.core.context_processors.csrf"
    )
暂无标签

2 个回答

0

LOGIN_REDIRECT_URL = '/pins/' 改成 LOGIN_REDIRECT_URL = '/',或者你想要跳转到的其他地方。这个设置是用来告诉系统登录后要跳转到哪里。

8

我遇到过和你一样的问题,我是通过把我的登录按钮的链接从

<a href="{% url 'social:begin' 'github' %}>

改成

<a href="{% url 'social:begin' 'github' %}?next={{ request.GET.next }}>

撰写回答