Django中实现http base auth的方法
使用curl发送base auth的请求
curl -u user:password http://ip:port
在http头中,会带有HTTP_AUTHORIZATION这个字段,这个字段在Django的HttpRequest中可以通过META查找
request.META.get(‘HTTP_AUTHORIZATION’)在使用Django自带的remoteuser auth时,还可以解析出 REMOTE_USER字段,但是在Django 1.7.1版本下测试不成功。
Django下的base auth实现方式
if 'HTTP_AUTHORIZATION' in request.META: auth = request.META.get('HTTP_AUTHORIZATION').split() if len(auth) == 2: # NOTE: We are only support basic authentication for now. # if auth[0].lower() == "basic": print("type %r auth1: %r" % (type(auth[1]), auth[1])) uname, passwd = base64.b64decode(auth[1]).decode().split(':') user = authenticate(username=uname, password=passwd) if user is not None: if user.is_active: login(request, user) request.user = user return view(request, *args, **kwargs)