На форуме нашел такой код
Код: Выделить всё
/**
* контроллер soap
*/
class SoapController extends CController
{
protected $authenticated = false;
public function actions()
{
return array(
'server'=>array(
'class'=>'CWebServiceAction',
),
);
}
/**
* Авторизация клиента soap
* @param string $username
* @param string $password
* @return boolean result of auth
* @soap
*/
public function auth($username, $password)
{
// классическая авторизация на yii
$identity = new SoapIdentity($username, $password);
if( $identity->authenticate() )
{
// авторизация сохраняется на один запрос и не для пользователя
$this->authenticated = true;
}
return true;
}
}
/**
* Некий обьект, хранящий авторизационные данные
*/
class SoapAuth
{
/** @var int password */
public $password;
/** @var int username */
public $username;
public function __construct($l, $p)
{
$this->password = $p;
$this->username = $l;
}
}
// подключаемя
$client = new SoapClient("http://localhost/commerce-soap/soap.php/soap/server");
// устанавливаем заголовок для авторизации
// магия состоит в том, что метод SoapController::auth() будет вызван именно перед действием вебсервиса.
$wsu = 'http://schemas.xmlsoap.org/ws/2002/07/utility';
$soapHeaders[] = new SoapHeader($wsu, 'auth', new SoapAuth("kuzp","pass"));
$client->__setSoapHeaders( $soapHeaders );