【问题标题】:How to get oauth2 client app from Django request如何从 Django 请求中获取 oauth2 客户端应用程序
【发布时间】:2017-09-03 01:27:27
【问题描述】:

我正在使用oauth2_provider + rest_framework。我已经配置了几个客户端应用程序,它们成功地进行了身份验证并接收了访问令牌。

我想在请求中包含客户端应用程序(例如request.client)。也许我应该创建某种中间件来设置它,但我不确定什么是正确的方法。还是oauth2_provider/oauthlib已经提供了这个功能,而我忽略了?

客户端应在以下情况下设置:

  • 提供了有效的访问令牌
  • 提供了有效的应用凭据(例如在请求访问令牌时)

Python v3.5.3、Django v1.10.6

【问题讨论】:

    标签: python django python-3.x oauth-2.0


    【解决方案1】:

    oauth2_provider AccessToken 有一个 foreign key 到应用程序发布该令牌

    您可以像这样从访问令牌中获取应用程序:application = request.auth.application

    【讨论】:

      【解决方案2】:

      AbstractApplication 类具有settings.AUTH_USER_MODEL https://github.com/evonove/django-oauth-toolkit/blob/0.12.0/oauth2_provider/models.py#L62 的外键

      因此,如果您使用默认的 Application 类,您可以通过 request.user.oauth2_providers_applications 获取客户端

      【讨论】:

      • 这种关系决定了应用程序的所有者,而不是发布用于验证当前用户的令牌的应用程序。当没有提供用户凭据(仅客户端应用程序)时也无关紧要
      猜你喜欢
      • 2011-11-23
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多