通过SoapHeader实现身份认证
说明:本文系转载 ,稍作改动 之前一直抱怨php的soap很傻,在client端有设置header的方法,在server端却没有取header的方法。那是很傻很天真,直接用正则表达式从soap信封的header中提取header信息。 server.php ? namespace 无用 name 鉴别身份标识的函数或者方法名 data 存放标识身份的字符串 mustUnderstand 是否必须处理该header actor 处理该header的角色(可以参照我上一篇文章) 注意看 红色 的一行,构造了一个 soapHeader , header 的名称为 “auth” , data 为 “123456789” , mustUnderstand 为 false , actor 为 SOAP_ACTOR_NEXT 。注意观察 server.php 中的 server 类有一个方法 “auth” ,刚好与 header 的名称对应,方法 auth 的参数 $u ,就是 soapHeader 的 data , soapServer 接收到这个请求会,先调用 auth 方法,并把 “123456789” 作为参数传递给该方法。 mustUnderstand 参数为 false 时,即便没有 auth 这个方法, say 方法也会被调用,但是如果它为 true 的话,如果 auth 方法不存在,就会返回一个 Soapfault 告知该 header 没有被处理。 actor 参数指名那些 role 必须处理该 header ,这儿我理解得不是太透彻,不好说。 大概就这样,关键点在于 SoapHeader 的构造。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |