【问题标题】:django-oauth-toolkit logout issue with not prompting the user for username/password every timedjango-oauth-toolkit 注销问题,每次都不提示用户输入用户名/密码
【发布时间】:2019-07-27 10:33:18
【问题描述】:

我在网上找不到任何关于这个问题的信息,所以我要把它放在这里!

我正在使用一个前端应用程序,该应用程序使用client_id 等重定向到后端(django-oauth-toolkit)上的自定义auth_views.LoginView。我已经完成了所有这些工作。 (顺便说一句,我正在使用隐式授权)。

问题是当用户注销时,我使用/o/revoke_token,它成功地从数据库中删除了令牌。但是,当用户转身重新登录时,它不会再次提示他们输入用户名/密码。 auth_views.LoginView 将给出 302 并使用有效的 api_key 重定向回前端。

如何防止这种情况发生?我想在用户每次点击该页面时提示他们输入用户名/密码。这样,他们可以在必要时注销并使用其他用户重新登录。

【问题讨论】:

    标签: django oauth django-rest-framework django-sessions django-oauth


    【解决方案1】:

    我也遇到了同样的问题,如果我没记错的话,那是因为你也需要真正退出。

    此时,您的用户仍处于登录状态,因此客户端将要求新的令牌,您的身份验证服务器将检查用户是否正确登录,会发现是,只需提供一个新令牌即可重定向。

    【讨论】:

    • 是的,我最终不得不继续将用户重定向到注销端点以终止浏览器会话。这做到了!谢谢
    【解决方案2】:

    编辑:这不是一个好的解决方案。看看 ZaX 提供的另一个答案。

    为了跟进这个问题,我最终通过将SESSION_COOKIE_AGE 设置为一个小数字 3 来修复它,以允许登录,但不保持用户会话处于活动状态。这将迫使他们重新输入他们的用户名/密码,但只要您有访问令牌,就不需要会话来从后端请求。

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      • 1970-01-01
      相关资源
      最近更新 更多