让我先说一下,我是一家大公司的工程师,而不是程序员,所以如果我离开的话,我很抱歉。这个问题确实难以谷歌答案,这通常意味着我非常问这个问题。因此,如果您愿意,我会尝试回复用户以寻求解决方案。
我还标记了多种语言,因为我不确定这是一个javascript解决方案还是python解决方案。我道歉。
基本上,当用户填写表单时,它会运行一个python cgi脚本,该脚本将信息存储到数据库中。我想自动编写用户名,这样用户就不必手动填写(不是为了安全,只是为了方便使用)
我的程序在apache RedHat服务器上,在/ etc / httpd / conf中我将以下内容放在我的httpd.conf文件中:
<Directory /var/www/html/program>
##### LDAP Login #######################
AuthType Basic
AuthName "ProbeEng Webserver: Enter Your BIGCOMPANY Username and Password"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldap://ldap.city.bigcompany.com/ou=mtworkers,o=bigcompany.com?uid"
##### Require Authentication
Require valid-user
Order deny,allow
Allow from all
</Directory>
当用户访问我的程序时,他们需要输入 BIGCOMPANY 用户名和密码。如何将该用户名发送到我的python cgi-script。他们启动表单的程序也是一个生成html的python cgi脚本。
我尝试了以下内容:
try:
username = getpass.getuser()
但这似乎不起作用。
使用cgi脚本时是否可以,如果可以,我该如何访问用户的用户名?
由于
答案 0 :(得分:1)
如果网络服务器对用户进行了身份验证,通常用户名将位于标头中,并在Python CGI脚本中显示为os.environ
中的环境变量。通常,此标头名称为REMOTE_USER
。
您可以尝试打印所有环境变量,只是为了查看那里的内容。
import os
for key, value in os.environ.items():
print(key, value)
一旦你知道你正在寻找什么密钥(可能是'REMOTE_USER'
),就像检索它一样
import os
username = os.environ.get('REMOTE_USER')
虽然,CGI模块可能不是您想要运行此应用程序的方式。每个请求都会产生一个新进程,并且在任何严重的流量下,很快就会成为该服务器的负担。