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


    ?>

  • 相关阅读:
    Symbol Commands
    Control Structures
    script.stub
    Lowest Common Ancestor of a Binary Search Tree
    Move Zeroes
    Odd Even Linked List
    ubuntu18.04系统安装及php7.2,apache2,mysql8,git,svn,composer,vs code 到安装 php 扩展配置php.ini 实现 laravel5.8 运行
    thinkphp3.2.3 自定义路由实践
    thinkphp3.2.3 自动验证 unique 出错的解决办法
    【重磅】中国集成电路产业基金投资版图详解
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1932511.html
Copyright © 2011-2022 走看看