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);
     }
     
    }


    ?>

  • 相关阅读:
    Docker镜像与仓库(四)
    Docker网络与存储(三)
    Docker基本使用(一)
    虚拟化KVM之优化(三)
    修改CENTOS7的网卡ens33修改为eth0
    虚拟化KVM之安装(二)
    虚拟化KVM之概述(一)
    Python不同版本打包程序为.exe文件
    JSON
    同源策略(same-origin policy)及三种跨域方法
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1932511.html
Copyright © 2011-2022 走看看