【问题标题】:I'm using python-social-auth but my app isn't logging out when the user logs out of Google我正在使用 python-social-auth 但是当用户退出 Google 时我的应用程序没有退出
【发布时间】:2021-02-14 14:12:39
【问题描述】:

我有 python-social-auth 正在对我的应用程序进行授权,并且一切正常。我可以通过 OAuth2 登录我的应用程序并通过典型的 Django logout 注销。

我的问题:如果用户退出 Google(例如从 GMail),它不会让我退出我的 Django 应用程序。我仍然被授权为 Google 用户,即使 Google已注销。

我已尝试通过下面的加载策略刷新令牌以“强制”检查以确保 Google 仍处于登录状态且无法正常工作。

social = request.user.social_auth.get(provider='google-oauth2')
access_token = social.get_access_token(load_strategy())
social.refresh_token(load_strategy())

我觉得我走错了路。我要做的就是验证 Google 是否仍然登录,这样我就可以认为我的 OAuth2 会话有效。有没有办法进行这种完整性检查?

我做错了什么或者我需要做什么?到目前为止,我的研究表明我想要的甚至是不可能的 - 我不喜欢这个答案,所以希望在这里有一个不同的答案。

【问题讨论】:

    标签: python django python-social-auth


    【解决方案1】:

    根据 OAuth2 的实现,这看起来是不可能的。

    我已经放弃了试图让它成为我想要的样子。我考虑过定期重复 OAuth2 请求,但这对用户来说似乎很费力,因为它们会被提示。

    似乎最好的方法是谷歌自己使用的:

    如果用户正在导航到应用程序的敏感区域,在那里他们可以执行可能被认为有害的功能,或者如果他们正在导航到某个地方以访问更敏感的信息,请考虑重新授权Oauth2 请求。

    这并不完全是我想要的,但看起来 OAuth2 可以提供什么。

    我也在考虑在 OAuth2 上实现一个计时器,并简单说明如果登录会话早于“X”,则强制另一个 OAuth2 质询。

    这些策略的混合似乎是可以接受的。我现在关闭它 - 如果有人有更好的建议或解决方案,请添加它!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多