如何在Flask中访问Apache基本身份验证用户
我正在使用Flask在Apache服务器上开发一个web页面,服务器在该服务器上强制执行基本身份验证。也就是说,用户访问服务器上的页面时,Apache会显示一个登录屏幕,并在将请求传递到我的页面之前检查登录凭据 问题是,我是否以及如何从flask/python代码中访问用户名。在同一台服务器上使用PHP而不是flask/python时,很简单:用户名是一个可用的$\服务器变量(看起来可用两次,作为密钥PHP\u AUTH\u USER的值,还可以进行身份验证)。我猜测/希望Apache也能将经过身份验证的用户名提供给flask(也许是通过WSGI),但我找不到它如何在Flask中访问Apache基本身份验证用户,apache,flask,Apache,Flask,我正在使用Flask在Apache服务器上开发一个web页面,服务器在该服务器上强制执行基本身份验证。也就是说,用户访问服务器上的页面时,Apache会显示一个登录屏幕,并在将请求传递到我的页面之前检查登录凭据 问题是,我是否以及如何从flask/python代码中访问用户名。在同一台服务器上使用PHP而不是flask/python时,很简单:用户名是一个可用的$\服务器变量(看起来可用两次,作为密钥PHP\u AUTH\u USER的值,还可以进行身份验证)。我猜测/希望Apache也能将经过
我已尝试在request.headers中显示所有键/值对,但用户名不存在。还有其他地方我应该找吗?我最终找到了它,它的可用性如下:
request.environ.get('REMOTE_USER')
不知道这不是我唯一的问题,但是,以防万一
它对任何人都有用,故事如下:
首先,我试图找出WSGI是否通过了身份验证
信息传送到烧瓶。对另一个问题的回答是非常正确的
有用的(它向您展示了如何查看WSGI以前提供的所有内容)
到了晚上
当我按照这个答案列出WSGI信息时,它没有
用户信息。但事实证明,这是因为
相关站点中的apache基本身份验证启用了apache
已为文档根目录(htdocs文件夹)配置配置文件。
因为我使用WSGI将相关请求重定向到一个文件夹
在文档路径之外,我实际上没有身份验证
为我的页面打开。(我没有注意到这一点,因为我访问了
htdocs下的一些页面被强制进行身份验证,并假定
当我进入我的烧瓶页面时,我没有被要求进行身份验证
因为身份验证已被缓存)。
已启用在相关apache站点中创建另一节
文件为我的flask目录设置身份验证启用了身份验证您可以从
请求
对象在flask中找到身份验证信息
from flask import request
def my_view():
auth = request.authentication
username = auth.username
password = auth.password
...
但是请注意,如果您正在使用apachemod_wsgi,则需要在virtualhost配置中打开WSGIPassAuthorization
指令。否则apache将使用身份验证头,并且不会将其传递给WSGI层
<virtualhost *:443>
...
WSGIPassAuthorization On
...
</virtualhost>
...
WSGIPassAuthorization On
...
更多信息和信息。这是正确的方法。尽管apache设置是
WSGIPassAuthorization On
(没有等号)。在Python 2和3中都尝试过,但我得到了AttributeError:“请求”对象没有属性“身份验证”