2009-12-21 67 views
4

我有一個Zend Framework應用程序,其唯一目的是充當XmlRpc/JSONRPC服務器。Zend Framework XML-RPC服務器的身份驗證方法

我主要遵循this guide的理念來實現我的實現方法。我覆蓋了我的Bootstrap的run()方法來運行一個Zend_XmlRpc_Server對象並將API類附加到它。

我想驗證任何XML-RPC方法,該方法使用存儲在數據庫表中的「API密鑰」運行。如果我有一個傳統的MVC ZF設置,我會使用一個控制器插件來自動處理身份驗證,但我沒有這個選項。我現在唯一的解決方案是手動在每個API方法中插入代碼來檢查身份驗證。

想一個更實用的方法來解決這個問題?我不想在每種方法的頂部都有一堆重複的代碼。

+0

答案更新中... – SMka 2009-12-21 09:55:02

回答

2

幾種方法來解決第q

  1. 最簡單的引導傳請求對象手動創建和檢查頭

    protected function _initModifiedFrontController() 
    { 
        $this->bootstrap('FrontController'); 
        $front = $this->getResource('FrontController'); 
    
        $request = new Zend_Controller_Request_Http(); 
    
        $response = new Zend_Controller_Response_Http(); 
        $response->setHeader('Content-Type','text/html; charset=UTF-8', true); 
        $front->setResponse($response); 
        $front->setRequest($request); 
    
        if ($request->isXmlHttpRequest()) { 
         $authAdapter = new Zend_Auth_Adapter_DbTable(
          $dbAdapter, 
          'users', 
          'username', 
          'password' 
         ); 
    
         // ...or configure the instance with setter methods 
         $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter); 
    
         $authAdapter 
          ->setTableName('users') 
          ->setIdentityColumn('username') 
          ->setCredentialColumn('password') 
         ; 
    
        } 
    } 
    

閱讀說明書Zend_Auth的。這是一種「zend方式」。

或U可以編寫自定義AuthAdaper.it的容易:)

更新1:

Read this carefully

+0

謝謝 - 我不太使用你使用FrontController設計方法,但它讓我思考着正確的方向。您的鏈接也非常有用。謝謝。 – 2009-12-21 21:01:19