Выполнил построение wsdl структуры, без авторизации все отрабатывается, хочу воткнуть простейшую http авторизацию:
Код: Выделить всё
class SoapWebServiceAction extends CWebServiceAction
{
public function run()
{
header('Content-Type: text/xml; charset=utf-8');
$username = '123';
$passwd = '123';
header('X-HEADER : ' . $_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized: ' . $_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
echo "Вы должны ввести корректный логин и пароль для получения доступа к ресурсу";
exit;
} else {
if ($username == $_SERVER['PHP_AUTH_USER'] && $passwd == $_SERVER['PHP_AUTH_PW']) {
parent::run();
}
else {
throw new Exception($_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
}
}
}
...
}
1. Проверяю через программу soapui. Ввожу адрес сервиса, ввожу данные доступа, получаю список методов с шаблоном для запроса.
2. Для запросов также для каждого метода вводить данные авторизации. Сделал.
Если ввожу неправильные данные - 99, 888, то ловлю ожидаемо:
99:888 из блока:
Код: Выделить всё
throw new Exception($_SERVER['PHP_AUTH_USER'] . ':' .$_SERVER['PHP_AUTH_PW']);
HTTP/1.0 401 '' : ''
Как будто бы я не отправлял данных авторизации.
Подскажите - почему такое может быть?