【发布时间】:2017-10-27 10:28:07
【问题描述】:
我已经使用 Django Oauth Toolkit 设置了一个 OAuth2 提供程序,它工作正常。问题是向我的 API 发出请求的客户端没有在标头中传递访问令牌(没有“AUTHORIZATION:BEARER XXXXXXX”)。相反,访问令牌是在 JSON 数据中传递的。
如何更改工具包的行为以从数据中读取访问令牌?
【问题讨论】:
我已经使用 Django Oauth Toolkit 设置了一个 OAuth2 提供程序,它工作正常。问题是向我的 API 发出请求的客户端没有在标头中传递访问令牌(没有“AUTHORIZATION:BEARER XXXXXXX”)。相反,访问令牌是在 JSON 数据中传递的。
如何更改工具包的行为以从数据中读取访问令牌?
【问题讨论】:
我找到了一种通过编写自己的 Django 中间件来满足 OAuth 工具包要求的方法。
import json
class TokenMiddlewareFix(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
try:
body = json.loads(request.body)
token = body.get("accessToken", None)
if token is not None:
request.META["HTTP_AUTHORIZATION"] = "Bearer {}".format(token)
except ValueError:
pass
response = self.get_response(request)
return response
【讨论】: