FB/Google を使用してサイトにログインしたユーザーがブラウザを閉じたときに強制的に再ログインする方法を探しています。私はhttps://django-social-auth.readthedocs.org/en/latest/configuration.htmlを読んでいましたが、そうは思いません:
SOCIAL_AUTH_EXPIRATION = 'expires'
また
SOCIAL_AUTH_SESSION_EXPIRATION = True
本当に私が探していることをします。パイプラインの最後のものとして有効期限を 0 に設定するこの方法でカスタム パイプラインを追加しようとしました。
def expire_session_on_browser_close(backend, details, response, social_user, uid, user, request, *args, **kwargs):
request.session.set_expiry(0)
SOCIAL_AUTH_PIPELINE = (
'social_auth.backends.pipeline.social.social_auth_user',
#'social_auth.backends.pipeline.associate.associate_by_email',
'social_auth.backends.pipeline.user.get_username',
'social_auth.backends.pipeline.user.create_user',
'social_auth.backends.pipeline.social.associate_user',
'social_auth.backends.pipeline.social.load_extra_data',
'social_auth.backends.pipeline.user.update_user_details',
'useraccount.pipeline.expire_session_on_browser_close',
)
しかし、それは効果がないようです。設定
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
も効果がありません。
同様に、私のサイトではユーザーが「伝統的に」ログインすることもできます。
request.session.set_expiry(0)
そこでトリックを実行すると、ユーザーはブラウザーを閉じるときにログインを強制されます。FB/Google ログインでは機能しません。
何かご意見は?
ありがとう!
編集:
私が行っていじくり回すと:
UserSocialAuthMixin::expiration_datetime()
から
db\base.py
強制的に0を返すと、問題は解決します。
しかし、これは悪い、悪いハッカーです。より良い、よりエレガントな方法はありますか? ありがとう!