擅长:python、mysql、java
<p>感谢您<a href="https://stackoverflow.com/users/354176/nthall">nthall</a>为我指明了正确的方向-找到<code>request.META</code>字典是关键。在</p>
<p>因为我找不到解释这个过程的资源,所以我将在这里发布整个Django过程,用于从授权头检索和验证数据。在</p>
<pre><code>import base64
from django.contrib.auth import authenticate
def header_auth_view(request):
auth_header = request.META['HTTP_AUTHORIZATION']
encoded_credentials = auth_header.split(' ')[1] # Removes "Basic " to isolate credentials
decoded_credentials = base64.b64decode(encoded_credentials).decode("utf-8").split(':')
username = decoded_credentials[0]
password = decoded_credentials[1]
feed_bot = authenticate(username=username, password=password)
# if the credentials are correct, then the feed_bot is not None, but is a User object.
</code></pre>
<p>Django将“HTTP”前缀大写并附加到请求中传递的任何头上,正如nthall正确指出的那样,它可以通过<code>request.META</code>进行访问。在</p>
<p>我隔离base64编码的信息,它的格式是<code>'Basic username:password'</code>,方法是将头分割成<code>'username:password'</code>。然后我使用base64进行解码,然后对结果进行解码,将类似字节的字符串转换为utf-8字符串。那么,只需要隔离用户名和密码。然后进行身份验证。在</p>