2009-12-21 65 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