2017-02-01 8 views
0

Я просто попыталсяКак я могу запустить базовый HTTP-аутентификацию и отправить информацию о пользователе в реальном времени?

=============================== 
     # Give user the file requested 
     url = "http://superhost.gr/data/files/%s" % realfile 

     username = getpass.getuser() 
     password = getpass.getpass() 

     r = requests.get(url, auth = (username, password))  # ask user for authentication data 
     r.raise_for_status() 
=============================== 

, а также ввод() как пользователь & удар комбо, но IAM не получают в хроме основной всплывающее окно HTTP аутентификации.

Любая идея, почему?

Как я могу ЗАПИСАТЬ пользователя для данных аутентификации http и хранить их isntead для предоставления их сценарию?

+0

У меня было это обходное решение для запуска веб-сервера для всплытия окна HTTP Auth print '' ' '' '% file_requested и я попытался прочитать имя пользователя авторизации, введенное пользователем с помощью authuser = os.environ.get (' REMOTE_USER ',' Άγνωστος ') К сожалению, он всегда не получает его, поэтому я пытаюсь сделать трюк с модулем запросов. –

ответ

0

Вы можете попробовать использовать ниже код, чтобы попросить пользователя ввести учетные данные и отправить их по HTTP запросу

from requests.auth import HTTPBasicAuth 
import requests 
import sys 

username = sys.argv[1] 
password = sys.argv[2] 
realfile = sys.argv[3] 

url = "http://superhost.gr/data/files/%s" % realfile 
r = requests.get(url, auth=HTTPBasicAuth(username, password)) 
print(r.status_code) 

Этот пользователь скрипт может работать как python script.py username password filename

+0

Благодарим вас, но unofrtuntely это не будет делать, потому что для этого скрипта требуются параметры, предоставляемые с помощью консоли. Мой скрипт - это cgi-скрипт python, а имя пользователя и пароль параметров должны быть вставлены в основные всплывающие окна Apache по умолчанию. –

+0

Вы имеете в виду, что эти значения должны быть учетными данными по умолчанию или что? Когда вы используете запросы 'HTTP', на самом деле нет всплывающих окон :) Это должно быть сделано на стороне сервера. Можете ли вы рассказать мне, кто ваши пользователи, и как они будут использовать ваш скрипт? – Andersson

+0

Когда вы запускаете базовые HTTP-окна auth (и он должен :-), тогда пользователь будет аутентифицироваться, потому что он будет предоставлять информацию об аутентификации, которая затем будет находиться в руках .htaccess и .htpasswd, если она успешно завершена. , –

0
# Give user the file requested 

print('''<meta http-equiv="refresh" 
content="5;url=http://superhost.gr/data/files/%s">''' % realfile) 

authuser = os.environ.get('REMOTE_USER', 'Άγνωστος') 
print(authuser) 
================================ 

Попытка это, чувствует Лик я» m почти там, за исключением того, что при печати значения переменной authuser по умолчанию используется значение «Άγνωστος», что означает, что нет.

Есть ли какой-либо другой способ, я могу захватить то, что пользователь дал для входа в систему для входа в систему?