通過設(shè)置的REMOTE_USER環(huán)境變量來認(rèn)證,即服務(wù)器完成了認(rèn)證。(通過request.META["REMOTE_USER"])
MIDDLEWARE_CLASSES = (
'...',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.RemoteUserMiddleware',
'...',
)
默認(rèn)的AUTHENTICATION_BACKENDS需要替換為RemoteUser形式的
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.RemoteUserBackend',
)
直接拿request.META['REMOTE_USER']中的用戶名并自動認(rèn)證词裤。注意,這樣之前的認(rèn)證方式就不能用了,可以在tuple中加上ModelBackend,這樣在RemoteUser失敗的情況可以使用之前的認(rèn)證方式蒙畴。
而django命令行的createsuperuser產(chǎn)生的用戶一直都是ModelBackend的。
如果你的認(rèn)證系統(tǒng)使用的不是REMOTE_USER這個環(huán)境變量呜象,可以通過繼承RemoteUserMiddleware并設(shè)置header來使用膳凝。
from django.contrib.auth.middleware import RemoteUserMiddleware
class CustomHeaderMiddleware(RemoteUserMiddleware):
header = 'HTTP_AUTHUSER'
RemoteUser要求每個請求都得帶REMOTE_USER碑隆,也可以使用PersistentRemoteUserMiddleware這樣可以維持認(rèn)證session。