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


    ?>

  • 相关阅读:
    [LintCode] Longest Substring Without Repeating Characters
    [LeetCode] 416. Partition Equal Subset Sum 相同子集和分割
    [LintCode] Reverse Linked List 倒置链表
    [LintCode] Median of Two Sorted Arrays 两个有序数组的中位数
    [LeetCode] 415. Add Strings 字符串相加
    [LintCode] Longest Consecutive Sequence 求最长连续序列
    [LeetCode] 411. Minimum Unique Word Abbreviation 最短的独一无二的单词缩写
    [LeetCode] 410. Split Array Largest Sum 分割数组的最大值
    [LeetCode] Longest Palindrome 最长回文串
    [LeetCode] Valid Word Abbreviation 验证单词缩写
  • 原文地址:https://www.cnblogs.com/zcy_soft/p/1932511.html
Copyright © 2011-2022 走看看