1

Я использую python-social-auth для входа и выхода из системы. Сначала вход с Facebook, Twitter и Google Plus был успешным (он будет запрашивать мое имя пользователя/адрес электронной почты и пароль). Моя проблема заключается в том, когда я выхожу из системы, а затем снова регистрируюсь через любой из них, я буду подписан автоматически, даже не спросив мое имя пользователя/адрес электронной почты и пароль еще раз. Разве я не вышел из системы?Выход с python-social-auth

Это мой disconnect pipeline:

SOCIAL_AUTH_DISCONNECT_PIPELINE = (
    'social.pipeline.disconnect.allowed_to_disconnect', 
    'social.pipeline.disconnect.get_entries', 
    'social.pipeline.disconnect.revoke_tokens', 
    'social.pipeline.disconnect.disconnect', 
) 

Это моя точка зрения выхода из системы:

from django.contrib.auth import logout as auth_logout 

def logout(request): 
    auth_logout(request) 
    return render_to_response('logged-out.html', {}, RequestContext(request)) 
+0

Попробуйте следующее: http://stackoverflow.com/questions/14529815/logout- с-django-social-auth –

+0

@NuranAfrasiyabov Я видел этот вопрос и пробовал каждое решение там, но это меня не помогло. все же Facebook, Twitter и Google Plus регистрируются, даже если я выхожу из системы. –

ответ

1

Так что я испытал это на моем сайте. Вот ссылка, которая объясняет поведение выхода из системы и отключение: http://python-social-auth.readthedocs.io/en/latest/logging_out.html Как вы можете видеть, чтобы отключиться от социальных приложений, вам необходимо отключить связь. Отключить - это то, как ваши пользователи могут попросить ваш проект «забыть о моей учетной записи».). Благодаря этому вы удаляете ассоциацию пользователей social_auth_usersocialauth своей таблицей. Для достижения этой цели здесь то, что вам нужно сделать:

**settings.py:** 
SOCIAL_AUTH_DISCONNECT_PIPELINE = (
# Verifies that the social association can be disconnected from the current 
# user (ensure that the user login mechanism is not compromised by this 
# disconnection). 
#'social.pipeline.disconnect.allowed_to_disconnect', 

# Collects the social associations to disconnect. 
'social.pipeline.disconnect.get_entries', 

# Revoke any access_token when possible. 
'social.pipeline.disconnect.revoke_tokens', 

# Removes the social associations. 
'social.pipeline.disconnect.disconnect', 
) 

в шаблонах:

<form id="myform" method="post" action="{% url 'social:disconnect' 'google-oauth2' %}5/?next={{request.path }}"> 
    {% csrf_token %} 
    <input type="hidden" name="name" value="value" /> 
    <a onclick="document.getElementById('myform').submit();">discon</a> 
</form> 

В первой строке номер 5 после Google-oatuh2 указывает идентификатор пользователя в таблице БД. Таким образом, первый пользователь на картинке ниже будет удален/отключен от моего приложения. Чтобы проверить, работает ли функция отключения, см. Таблицу social_auth_usersocialauth, была ли удалена ассоциация пользователей. enter image description here Но все дело в том, что всякий раз, когда вы подключаетесь через google, facebook к своему собственному приложению, это означает, что вы входите в систему на сайт google или facebook. (Так как во время первого входа он открывает facebook или страницу входа в Google). Даже после того, как вы отключитесь от своего собственного приложения, вам необходимо выйти из Facebook или на веб-сайт google. В противном случае ваш браузер заставит вас войти в систему, а при повторном подключении к веб-приложению вы автоматически войдете в систему.

 Смежные вопросы

  • Нет связанных вопросов^_^