博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php webservice 证书,PHP WebService客户端验证
阅读量:6268 次
发布时间:2019-06-22

本文共 1495 字,大约阅读时间需要 4 分钟。

Here's my solution to make SOAP-headers based authentication.

1). First of all we define the decorator class for our service class:

class SOAP_Service_Secure

{

protected $class_name    = '';

protected $authenticated = false;

// -----

public function __construct($class_name)

{

$this->class_name = $class_name;

}

public function AuthHeader($Header)

{

if($Header->username == 'foo' && $Header->password == 'bar')

$this->authenticated = true;

}

public function __call($method_name, $arguments)

{

if(!method_exists($this->class_name, $method_name))

throw new Exception('method not found');

$this->checkAuth();

return call_user_func_array(array($this->class_name, $method_name), $arguments);

}

// -----

protected function checkAuth()

{

if(!$this->authenticated)

HTML_Output::error(403);

}

}

?>

2). Then we pass an instance of it to the SoapServer object.

$Service = new SOAP_Service_Secure('My_Service');

$Server = new SoapServer('my-service.wsdl');

$Server->setObject($Service);

$Server->handle();

?>

3). Implementing a client:

$Client = new SoapClient('http://example.com/my-service.wsdl', array(

'exceptions' => true

));

// -----

$AuthHeader = (object) array('username' => 'foo', 'password' => 'bar');

$Headers[] = new SoapHeader('http://example.com', 'AuthHeader', $AuthHeader);

$Client->__setSoapHeaders($Headers);

// -----

$Result = $Client->someMethod();

?>

非常不错!不过看的不是太明白,SOAP_Service_Secure->__call,好像跟 SosapClient->__call,有着关系?望高手指点

应该是在 SOAP_Service_Secure 中找不到 someMethod 方法时,就会调用 __call 方法.

转载地址:http://xaspa.baihongyu.com/

你可能感兴趣的文章
NC营改增
查看>>
Lua
查看>>
Mysql备份系列(3)--innobackupex备份mysql大数据(全量+增量)操作记录
查看>>
postgresql 获取刚刚插入的数据主键id
查看>>
C# Activex开发、打包、签名、发布 C# Activex开发、打包、签名、发布 [转]
查看>>
05-Vue入门系列之Vue实例详解与生命周期
查看>>
验证码展示
查看>>
浅谈大型web系统架构
查看>>
淘宝大秒系统设计详解
查看>>
linux如何修改登录用户密码
查看>>
Kali Linux 2017中Scapy运行bug解决
查看>>
Python监控进程性能数据并画图保存为PDF文档
查看>>
Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法
查看>>
Mac OS 10.10.3下Apache + mod_wsgi配置【一】
查看>>
Hibernate基于注解的双向one-to-many映射关系的实现
查看>>
算法竞赛入门经典 例题 3-2 蛇形填数
查看>>
remove-duplicates-from-sorted-list I&II——去除链表中重复项
查看>>
c++ 网络库
查看>>
Linux 格式化扩展分区(Extended)
查看>>
linux echo命令
查看>>