Django中实现http base auth的方法

Django中实现http base auth的方法

  1. 使用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版本下测试不成功。

  2. 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)

你可能感兴趣的:(django,python)