重新封装zend_soap实现http连接安全认证的php代码
author:一佰互联 2019-04-30   click:164
复制代码 代码如下:
<?php
class MyFramework_Soap_server extends Zend_Soap_Server {
protected $_login = "";
protected $_password = "";
public function __construct($wsdl = null, array $options = null) {
parent::__construct($wsdl,$options);
if(isset($options["login"])){
$this->_login=$options["login"];
$this->_password=$options["password"];
$this->_authenticate();
}
}
private function _authenticate(){
$this->setAuthenticate($this->_login,$this->_password);
}
public function setHttpLogin($login){
$this->_login=$login;
}
public function setHttpPassword($password){
$this->_password=$password;
if(isset($this->_login)){
$this->_authenticate();
}
}
public function setAuthenticate($login,$password){
if ($_SERVER["PHP_AUTH_USER"]!=$login || $_SERVER["PHP_AUTH_PW"]!=$password) {
header("WWW-Authenticate: Basic realm="MyFramework Realm"");
header("HTTP/1.0 401 Unauthorized");
echo "You must enter a valid login ID and password to access this resource. ";
exit;
}
}
}
?>

复制代码 代码如下:
<?php
class Soap_server_test {
public $view = "";
public $params = "";
public $requestObj = "";
public $dbObj = "";
function __construct() {
$this->view = $GLOBALS["view"];
$this->params = $GLOBALS["params"];
$this->requestObj = $GLOBALS["requestObj"];
$this->dbObj = $GLOBALS["dbObj"];
}
function indexAction(){
if(isset($_GET["wsdl"])) {
$autodiscover = new MyFramework_Soap_AutoDiscover();
$autodiscover->setClass("Model_Service_SoapClassSetTest");
$autodiscover->handle();
exit;
} else {
//$options= array("encoding" => "UTF-8","login"=>"tangjian","password"=>"123456");
$options= array("encoding" => "UTF-8");
$soap = new MyFramework_Soap_Server("http://tj.MyFramework.com/default/soap_server_test/index?wsdl",$options);
$soap->setHttpLogin("tangjian");
$soap->setHttpPassword("123456");
$soap->setClass("Model_Service_SoapClassSetTest");
$soap->handle();
exit;
}
}
function clientAction() {
//$options= array("encoding" => "UTF-8","login"=>"tangjian","password"=>"123456",
// "compression" =>SOAP_COMPRESSION_GZIP);
$options= array("encoding" => "UTF-8",
"compression" =>SOAP_COMPRESSION_GZIP);
$client = new MyFramework_Soap_Client("http://tj.MyFramework.com/default/soap_server_test/index?wsdl",$options);
$client->setHttpLogin("tangjian");
$client->setHttpPassword("123456");
$result=$client->getPass("tang","man");
print_r($result);
}
}
?>