REMOTE_USER

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

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

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

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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容