Django-allauth и проблема выхода из системы с Google
Я использую django-allauth специально и только для аутентификации Google. Я сталкиваюсь с несколькими странными проблемами:
Выйдите из браузера Chrome, и при следующем входе пользователь будет запомнен. Пользователь никогда не перенаправляется на вход в Google.
.Выход из браузера Safari и пользователь НЕ запоминается при следующем входе, поэтому при следующей попытке входа он перенаправляется на вход Google.
Желаемый результат заключается в том, чтобы всегда заставлять пользователей проходить полный процесс входа в систему. Они должны быть направлены в Google для получения электронной почты и пароля. Это позволит пользователям совместно использовать компьютер и переключаться между учетными записями.
Я экспериментировал с несколькими настройками конфигурации, но безуспешно. Вот текущие конфигурации:
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_AUTHENTICATED_LOGIN_REDIRECTS = True
LOGIN_REDIRECT_URL = '/stores/store_list'
ACCOUNT_LOGOUT_REDIRECT_URL = 'home'
ACCOUNT_SESSION_REMEMBER = False
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 60
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'offline',
'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
}
}
}
Является ли это чем-то ожидаемым и напрямую связанным с сессией? Нужно ли удалять сессию при каждом выходе из системы? Я протестировал, вручную удалив данные сессии пользователя из базы данных, что дало правильные результаты. Но я не уверен, что это правильный подход, и если да, то как его применить.
Заранее спасибо.
Я смог найти ответ в документации:
Здесь вы можете передать необязательный параметр process, который указывает, как обработать социальный вход. Вы можете выбрать между login и connect:
<a href="{% provider_login_url "twitter" process="connect" %}">Connect a Twitter account</a>
Кроме того, вы можете передать параметр действия со значением reauthenticate, чтобы указать, что вы хотите, чтобы пользователю был повторно предложено пройти аутентификацию, даже если он уже вошел в систему. На данный момент это поддерживается только Facebook, Google и Twitter.
Итак, HREF для входа в систему будет выглядеть следующим образом.
<a href="{% provider_login_url "google" action="reauthenticate" %}">Sign in Google account</a>
Вот документация, которую я нашел по PyPi