Позвольте мне предисловие к этому, сказав, что я инженер в крупной компании и НЕ программист, поэтому мне жаль, если я уйду. Этот вопрос действительно был трудным для google ответа, который обычно означает, что я задаю вопрос ужасно. Поэтому я постараюсь ответить пользователям на то, чтобы работать над решением, если вы позволите мне.
Я также отметил несколько языков, потому что я не уверен, что это решение javascript или решение python. Приношу извинения.
В принципе, когда пользователь заполняет форму, он запускает скрипт cgi python, который хранит информацию в базе данных. Я хочу автоматизировать запись имени пользователя, поэтому пользователю не нужно заполнять его вручную (не для обеспечения безопасности, просто для простоты использования)
Моя программа находится на сервере 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. Как я могу отправить это имя пользователя в свой cgi-скрипт python. Программа, на которой они запускают форму, также является cgi-скриптом python, который генерирует html.
Я попробовал следующее:
try:
username = getpass.getuser()
Но это не работает.
Возможно ли это при использовании cgi-скрипта, если да, то как мне получить доступ к имени пользователя?
Спасибо
Если веб-сервер аутентифицировал пользователя, обычно имя пользователя будет в заголовке и будет отображаться как переменная среды в os.environ
в скрипте CGI Python. Обычно это имя заголовка REMOTE_USER
.
Вы можете попробовать распечатать все переменные среды, просто чтобы увидеть, что там.
import os
for key, value in os.environ.items():
print(key, value)
Как только вы узнаете, какой ключ вы ищете (возможно, 'REMOTE_USER'
), просто 'REMOTE_USER'
его как
import os
username = os.environ.get('REMOTE_USER')
Хотя, модуль CGI, вероятно, не так, как вы хотите запускать это приложение. Каждый запрос порождает новый процесс и с любым серьезным количеством трафика может быстро стать обузой для этого сервера.