python - WSGI/Django : pass username back to Apache for access log

标签 python django apache authentication mod-wsgi

我的 Django 应用程序使用 Django 的标准 WSGIHandler 部署在 Apache 下的 mod_wsgi 中,通过 Django 端的表单登录对用户进行身份验证。所以对于 Apache,用户是匿名的。这会降低 Apache 访问日志的用处。

有没有办法在处理请求后通过 WSGI 包装器将用户名传回 Apache,以便它出现在 Apache 访问日志中?

(版本:Django 1.1.1、mod_wsgi 2.5、Apache 2.2.9)

最佳答案

只有在使用嵌入式模式并且使用名为 apswigpy 的单独包时才能这样做,它为原始 Apache 请求对象提供了 Python 绑定(bind)。 mod_wsgi 包提供了一种可选机制,允许原始 Apache 请求对象在 WSGI 环境中作为 Python CObject 引用传递。您将它与 apswigpy 结合使用,例如:

from apache.httpd import request_rec
r = request_rec(environ['apache.request_rec'])
r.user = user

至少我认为这将设置访问日志记录随后可以使用的适当信息。

你真的应该把这个讨论带到 mod_wsgi 邮件列表。

关于python - WSGI/Django : pass username back to Apache for access log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2244244/

相关文章:

python - 如何通过第二个属性对已经排序的数组进行排序?

python - 如何在 Ubuntu 的可执行程序中转换 python 程序 .py?

python - pandas dataframe 从元素频率大于 1 的列创建唯一 ID

java - 失败:找不到环境变量

linux - 每个虚拟主机的error_log?

python - 在 Python 中截断为小数点后三位

jquery - Django表单未在Bootstrap模态中显示

django - 在 Django Admin 中保存有时会失败

apache - 解释htaccess规则?

python - django 不能在基于类的 View 中使用全局变量