我有一个像这样创建的肥皂服务器:
class ServerController extends Zend_Controller_Action { public function serverAction() { memcache_flush(); Zend_Registry::get('cache')->clean(Zend_Cache::CLEANING_MODE_ALL); $server = new SoapServer("http://####/services/soap-server/wsdl"); $server->setClass('SOAP_Server_Map'); $server->handle(); } }
我想为它添加身份验证,以便每当有人调用" SOAP_Server_Map
"中的函数时,它会检查SoapClient选项数组中提供的凭据('login'和'password')是否有效.
有没有人有任何建议/帮助?
要将身份验证添加到Zend_Soap_Server或Zend_Json_Server,只需在HTTP服务器(即:Apache)配置或.htaccess文件中指定HTTP身份验证.以下.htaccess文件应该有效:
AuthType Basic AuthName "Supreme Data Services" AuthUserFile /var/www/localhost/passwd Require valid-user
为安全起见,请确保将密码文件保留在docroot之外.可以使用Apache附带的htpasswd来创建密码文件.当然,您可以使用更高级的身份验证类型.
为了使用这些服务,您现在必须在发出请求时指定用户名和密码.如果您使用Zend Framework来创建客户端,则可以对SOAP执行以下操作:
$client = new Zend_Soap_Client($wsdl, array('login' => $username, 'password' => $password));
以下是JSONRPC:
$http = new Zend_Http_Client(); $http->setAuth($username, $password); $client = new Zend_Json_Client($uri, $http);