如何获取在Apache服务器上运行的Flask应用中登录的当前用户的用户名?

时间:2018-09-17 03:21:48

标签: python-3.x windows apache flask flask-sqlalchemy

我有一个烧瓶应用程序(使用Python版本3.7)运行在Apache服务器(2.4版)上,使用mod_wsgi(4.6.4版)和SQLAlchemy(1.2.11版)。

我正在设计一种逻辑,以获取在Windows上登录的当前用户的经理的姓名:

(将get pass模块与getuser方法一起使用)。

我的查询:

get_manager_name = session.query(Table.employee_first_name + " " + Table.employee_last_name).filter(Table.employee_net_username == getpass.getuser()).all()

如果我绕过Apache(使用Flask随附的开发服务器),则上述查询有效。

另一方面,如果我使用Apache,则查询返回一个空列表[]

我使用Python (logging.debug(getpass.getuser()))中的日志记录模块调试了代码,发现getpass.getuser()返回了Apache最终在其上运行的服务帐户的名称,而不是当前登录用户的用户名。

所以我的问题是我需要怎么做才能通过Windows上的Apache获得登录用户的用户名?

我在类似的问题上发现了类似的问题,但这与IIS有关:

How do I get the username of the current user in a Flask app on an IIS server using Windows Authentication?

1 个答案:

答案 0 :(得分:0)

需要设置一个中间件,以便可以将登录用户的用户名从Apache发送到Flask应用。

可以通过以下方式解决:

http://flask.pocoo.org/snippets/69/