如何解决如何在 Django 的 Authlib 中添加自定义标题
我需要你的一些帮助,使 Authlib 适应 Django。
我正在尝试使用 OpenId 和 Authlib 开发 Django 应用程序来连接我的用户,但遇到访问令牌问题,出现了 invalid_client 问题。使用 Postman,我发现 OpenId 提供程序需要在 Header 中使用一些参数,例如“Content-Length”或“Host”。
当 Header 参数在 client.py 中定义时,它就像一个魅力。但是,我想从 views.py 传递自定义标头(主要是为了避免直接在包中定义 Host),但是 authorize_access_token 不允许多个参数,
def auth(request):
token = oauth.customprovider.authorize_access_token(request)
也许“非标准的合规性修复”功能可能会有所帮助,但我无法针对 Django 和 Header 参数进行调整 https://docs.authlib.org/en/stable/client/oauth2.html#compliance-fix-oauth2
from authlib.common.urls import add_params_to_uri,url_decode
def _non_compliant_param_name(url,headers,data):
params = {'site': 'stackoverflow'}
url = add_params_to_uri(url,params)
return url,body
def _fix_token_response(resp):
data = dict(url_decode(resp.text))
data['token_type'] = 'Bearer'
data['expires_in'] = int(data['expires'])
resp.json = lambda: data
return resp
session.register_compliance_hook(
'protected_request',_non_compliant_param_name)
session.register_compliance_hook(
'access_token_response',_fix_token_response)
有谁知道将自定义标头传递给 Authlib 或使用 Compliance Fix 和 Django 定义它的方法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。