2009-12-21 5 views
4

J'ai une application Zend Framework dont le seul but est de servir de serveur XmlRpc/JSONRPC.Méthodes d'authentification pour le serveur XML-RPC de Zend Framework

J'ai suivi la plupart du temps la philosophie de this guide pour ma méthode de mise en œuvre. J'ai passé outre la méthode run() de mon Bootstrap pour exécuter un objet Zend_XmlRpc_Server et y attacher les classes d'API.

Je veux authentifier toute méthode XML-RPC qui obtient couru avec une « clé API » J'ai stocké dans une table de base de données. Si j'avais une configuration MVC ZF traditionnelle, j'utiliserais un plugin de contrôleur pour prendre automatiquement en charge l'authentification, mais je n'ai pas cette option. Ma seule solution en ce moment est d'insérer manuellement du code dans chaque méthode d'API pour vérifier l'authentification.

Toute réflexion sur une manière plus pragmatique pour résoudre ce problème? Je préférerais ne pas avoir un tas de code répété au sommet de chaque méthode.

+0

réponse mise à jour ... Merci – SMka

Répondre

2

plusieurs façons de résoudre le q

  1. plus facile de créer dans Bootstrap reqest objet manuellement et vérifier les en-têtes

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

Lire Zend_Auth manuel. c'est un "chemin de zend".

ou u peut écrire sur mesure AuthAdaper.it est facile :)

MISE À JOUR 1:

Read this carefully

+0

- Je ne suis pas tout à fait utiliser la méthode frontController que vous avez utilisé, mais ça m'a fait penser dans la bonne direction. Votre lien était également très utile. Je vous remercie. –