zoukankan      html  css  js  c++  java
  • 重新封装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);
     }
     
    }


    ?>

  • 相关阅读:
    c语言中逆向显示数值
    c语言中无限循环语句
    css静态网页css代码
    css静态网页css代码
    考试html代码
    考试css代码
    考试html框架代码
    css静态网页代码
    5个CSS书写技巧
    5个CSS书写技巧
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1932511.html
Copyright © 2011-2022 走看看