重新封装zend_soap实现http连接安全认证

<?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.\n";
      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);
 }
 
}


?>

原文地址:https://www.cnblogs.com/zcy_soft/p/1932511.html