Django REMOTE_USER 不存在但 HTTP_REMOTE_USER 存在
Django REMOTE_USER does not exist but HTTP_REMOTE_USER does
全部,
我有什么应该是很简单的问题。我正在尝试按照以下说明使用 REMOTE_USER 变量来使用 Django 身份验证:https://docs.djangoproject.com/en/1.8/howto/auth-remote-user/。
然后,为了测试它是否有效,我使用了邮递员 chrome 扩展。我在那里设置了一个名为 "REMOTE-USER" 的 header 变量,然后是超级用户的文本,然后我进入了 django 管理页面。我没有自动登录。
我在RemoteUserMiddleware
class中的process_request函数中设置了一个断点。当我发出请求时,我看到 request.META["HTTP_REMOTE_USER"]
存在但 request.META["REMOTE_USER"]
不存在。默认 RemoteUserMiddleware
变量使用 header="REMOTE_USER"
。 HTTP Header 变量似乎有一个 HTTP_ 前缀,所以我不明白这是怎么回事。
我觉得我一定遗漏了一些明显的东西。谢谢!
REMOTE_USER
是由您的 Web 服务器(例如 Apache)设置的环境变量,而不是 HTTP header。如果它是 HTTP header,那么用户将能够欺骗 header,并以他们想要的任何用户身份登录。
所有 http header 都带有前缀 HTTP_
以便您区分它们和环境变量。
您可以使用开发服务器设置环境变量,如下所示。
REMOTE_USER=admin ./manage.py runserver
全部,
我有什么应该是很简单的问题。我正在尝试按照以下说明使用 REMOTE_USER 变量来使用 Django 身份验证:https://docs.djangoproject.com/en/1.8/howto/auth-remote-user/。
然后,为了测试它是否有效,我使用了邮递员 chrome 扩展。我在那里设置了一个名为 "REMOTE-USER" 的 header 变量,然后是超级用户的文本,然后我进入了 django 管理页面。我没有自动登录。
我在RemoteUserMiddleware
class中的process_request函数中设置了一个断点。当我发出请求时,我看到 request.META["HTTP_REMOTE_USER"]
存在但 request.META["REMOTE_USER"]
不存在。默认 RemoteUserMiddleware
变量使用 header="REMOTE_USER"
。 HTTP Header 变量似乎有一个 HTTP_ 前缀,所以我不明白这是怎么回事。
我觉得我一定遗漏了一些明显的东西。谢谢!
REMOTE_USER
是由您的 Web 服务器(例如 Apache)设置的环境变量,而不是 HTTP header。如果它是 HTTP header,那么用户将能够欺骗 header,并以他们想要的任何用户身份登录。
所有 http header 都带有前缀 HTTP_
以便您区分它们和环境变量。
您可以使用开发服务器设置环境变量,如下所示。
REMOTE_USER=admin ./manage.py runserver