将apache2摘要认证信息传递给由mod_wsgi运行的wsgi脚本
我有一个指令
<VirtualHost *>
<Location />
AuthType Digest
AuthName "global"
AuthDigestDomain /
AuthUserFile /root/apache_users
<Limit GET>
Require valid-user
</Limit>
</Location>
WSGIScriptAlias / /some/script.wsgi
WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
WSGIProcessGroup mywsgi
ServerName some.example.org
</VirtualHost>
我想知道在 /some/script.wsgi 这个文件里
def application(environ, start_response):
start_response('200 OK', [
('Content-Type', 'text/plain'),
])
return ['Hello']
哪个用户已经登录。
我该怎么做呢?
2 个回答
2
关于Apache/mod_wsgi以及访问、认证和授权机制的更多信息可以在这里找到:
http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms
这些信息默认不会传递,因为如果传递了,可能会把密码信息泄露给一些不应该获取这些信息的应用程序。
16
添加 WSGIPassAuthorization On
:
<VirtualHost *>
<Location />
AuthType Digest
AuthName "global"
AuthDigestDomain /
AuthUserFile /root/apache_users
<Limit GET>
Require valid-user
</Limit>
</Location>
WSGIPassAuthorization On
WSGIScriptAlias / /some/script.wsgi
WSGIDaemonProcess mywsgi user=someuser group=somegroup processes=2 threads=25
WSGIProcessGroup mywsgi
ServerName some.example.org
</VirtualHost>
然后只需读取 environ['REMOTE_USER']
:
def application(environ, start_response):
start_response('200 OK', [
('Content-Type', 'text/plain'),
])
return ['Hello %s' % environ['REMOTE_USER']]
更多信息请查看 mod_wsgi文档。