使用python-social-auth登录和注销

时间:2015-10-20 20:18:24

标签: python django facebook python-social-auth

我使用python-social-auth来实现Facebook和Twitter的登录。

Settings.py

INSTALLED_APPS = (
...
'social.apps.django_app.default',
...)

TEMPLATE_CONTEXT_PROCESSORS = (
   'django.contrib.auth.context_processors.auth',
   'django.core.context_processors.debug',
   'django.core.context_processors.i18n',
   'django.core.context_processors.media',
   'django.core.context_processors.static',
   'django.core.context_processors.tz',
   'django.contrib.messages.context_processors.messages',
   'social.apps.django_app.context_processors.backends',
   'social.apps.django_app.context_processors.login_redirect',
)

AUTHENTICATION_BACKENDS = (
   'social.backends.facebook.FacebookOAuth2',
   'social.backends.twitter.TwitterOAuth',
   'django.contrib.auth.backends.ModelBackend',
)

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/'

SOCIAL_AUTH_TWITTER_KEY = ''
SOCIAL_AUTH_TWITTER_SECRET = ''

SOCIAL_AUTH_FACEBOOK_KEY = ''
SOCIAL_AUTH_FACEBOOK_SECRET = ''
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']

SOCIAL_AUTH_PIPELINE = (
    # recibe vía backend y uid las instancias de social_user y user
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    # Recibe según user.email la instancia del usuario y lo reemplaza con uno que recibió anteriormente
    'social.pipeline.social_auth.social_user',
    # Trata de crear un username válido según los datos que recibe
    'social.pipeline.user.get_username',
    # Crea un usuario nuevo si uno todavía no existe
    'social.pipeline.user.create_user',
    # Trata de conectar las cuentas
    'social.pipeline.social_auth.associate_user',
    # Recibe y actualiza social_user.extra_data
    'social.pipeline.social_auth.load_extra_data',
    # Actualiza los campos de la instancia user con la información que obtiene vía backend
    'social.pipeline.user.user_details',
)

from django.core.urlresolvers import reverse_lazy
LOGIN_URL = reverse_lazy('Vulpini.co')
LOGIN_REDIRECT_URL = reverse_lazy('Vulpini.co')
LOGOUT_URL = reverse_lazy('logout')

嗯,这是settings.py

中的配置

这是我的 的 URLs.py

url(r'^$', 'django.contrib.auth.views.login',{'template_name':'app/index.html'}, name='Vulpini.co'),
    url(r'^$', 'django.contrib.auth.views.logout', name='logout'),

这是我的

loginpartial.html

{% if user.is_authenticated %}
    {% csrf_token %}
    <ul class="nav navbar-nav navbar-right">
        <li><a href=#notifiaciones data-toggle="modal" class="link"></a><i class="fa fa-bell-o"></i></li>
        <li><a>{{ user.get_full_name|default:user.username }}</a></li>
        <li><a href="/logout/">Log off</a></li>
    </ul>

{% else %}
        <li><a href=#login data-toggle="modal"><i class="fa fa-sign-in"></i> Log in</a></li>

{% endif %}

我的问题是当我退出时,它将我重定向到/logout并显示Django管理页面邀请再次登录,而我想重定向到主页面。我怎样才能做到这一点? 谢谢。

0 个答案:

没有答案