【问题标题】:How do you get the auth parameters from a POST request?如何从 POST 请求中获取 auth 参数?
【发布时间】:2019-10-17 03:01:42
【问题描述】:

我正在向自己发送一个 POST 请求:

requests.post("http://localhost:8000/api/", json=data, auth=('myuser', 'mypwd'))

我正在使用 Django 接收 POST 请求。我想验证用户名和密码是否与我所拥有的匹配。

def myAPI(request)
    if request.method == 'POST':

          # obtain username and password here

如何获取纯文本的用户名和密码?我试过request.body.decode()request.POST.items()request.META——就是找不到!我可以在data 中发送凭据,这很容易。或者,我可以使用 API 密钥而不是用户名和密码,但我也不知道如何访问它。

【问题讨论】:

  • 应该是request.META['HTTP_AUTHORIZATION']
  • 当我执行print('Auth:', request.META['HTTP_AUTHORIZATION']) 时,它会打印出类似Auth: Basic bX85js03jg9sl(随机字符)的内容
  • 啊哈——它是用 base64 编码的。在另一个 answer 上找到。
  • 这不是随机的。这是你的用户名和密码,base64 编码。
  • 为什么其他信息都不用base64编码?

标签: python django python-requests


【解决方案1】:

这对你有用:

req_header = request.META['HTTP_AUTHORIZATION']
credentials = auth_header.split(' ')[1]
base64_decoded_credentials = base64.b64decode(encoded_credentials)
decoded_utf_credentials = base64_decoded_credetials.decode("utf-8").split(':')
username = decoded_utf_credentials[0]
password = decoded_utf_credentials[1]

【讨论】:

    猜你喜欢
    • 2021-01-12
    • 2017-03-08
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多