最近的项目需要使用webservice,我使用php开发服务器端,当然也是使用yii提供的webservice支持。
我们的客户端是使用delphi开发的,现在两者可以很完善的交互信息了。
现在的问题是怎么去进行webservice跟踪?我也不知道啊!
强哥让我看phonebook的案例,我发现他的controller继承了一个接口IWebServiceProvider。
其实就是两个方法:beforeWebMethod和afterWebMethod。
然后在beforeWebMethod方法中写到:
if(!Yii::app()->user->isGuest || preg_match($pattern,$service->methodName)) {…}
大概意识是登陆合法用户或者安全方法可以被远程访问,关键在于Yii::app()->user啊,我不明白!
Yii::app()->user是基于Cookie的啊,如果我的客户端是delphi的话,还可以吗?
网上有关于使用Cookie来跟踪webservice的资料,但是是有条件的。
人们更多的是使用SOAP头信息来进行标示,如果客户端能够将自己的user id放入SOAP头信息中的话,
服务器端就可以读取并进行验证了,这个想法真的不错!
如果能在beforeWebMethod的方法中实现以上的方案,是否可以呢?
beforeWebMethod方法的参数是CWebService的,它可以读SOAP头信息吗?
我去研究研究,有知道的朋友,或者有更好的Webservice跟踪方法,请告诉我!