Django Rest Framework API如何从请求中提取access_token?

时间:2016-02-16 01:26:14

标签: django oauth

我的API目前受到来自django-oauth-toolkit的OAuth2TokenAuthentication的保护,因此它可以通过以下方式验证包含访问令牌的API请求:

  1. 作为查询参数?access_token=xxxx
  2. 标题Authorization: Bearer xxxx 中的
  3. 虽然我可以在我的API视图中进行硬编码以尝试从这两个地方获取访问令牌,但是有一种获取令牌的规范方法吗?

1 个答案:

答案 0 :(得分:0)

我挖掘了OAuth2TokenAuthentication中的代码,并将其借入我的API视图:

class IntrospectView(APIView):
    """
    An API view that introspect a given token
    """
    serializer_class = TokenIntrospectSerializer
    authentication_classes = []
    permission_classes = []

    def get(self, request, *args, **kwargs):
        oauthlib_core = get_oauthlib_core()
        valid, r = oauthlib_core.verify_request(request, scopes=[])
        if not valid:
            raise APIException('Invalid token')
        return Response(TokenIntrospectSerializer(r.access_token).data)