REMOTE_USER

通过设置的REMOTE_USER环境变量来认证,即服务器完成了认证。(通过request.META["REMOTE_USER"])

MIDDLEWARE_CLASSES = (
'...',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
'...',
)

默认的AUTHENTICATION_BACKENDS需要替换为RemoteUser形式的

AUTH_USER_MODEL = 'auth.User'
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.RemoteUserBackend',
)

直接拿request.META['REMOTE_USER']中的用户名并自动认证。注意,这样之前的认证方式就不能用了,可以在tuple中加上ModelBackend,这样在RemoteUser失败的情况可以使用之前的认证方式。

而django命令行的createsuperuser产生的用户一直都是ModelBackend的。

如果你的认证系统使用的不是REMOTE_USER这个环境变量,可以通过继承RemoteUserMiddleware并设置header来使用。

from django.contrib.auth.middleware import RemoteUserMiddleware

class CustomHeaderMiddleware(RemoteUserMiddleware):
    header = 'HTTP_AUTHUSER'

RemoteUser要求每个请求都得带REMOTE_USER,也可以使用PersistentRemoteUserMiddleware这样可以维持认证session。

你可能感兴趣的:(REMOTE_USER)