Методы аутентификации для XML-RPC-сервера Zend Framework


У меня есть приложение Zend Framework, единственная цель которого - служить сервером XmlRpc/JSONRPC.

Я в основном следовал философии из этого руководства для моего метода реализации. Я переопределил метод run() моей начальной загрузки, чтобы запустить объект Zend_XmlRpc_Server и прикрепить к нему классы API.

Я хочу аутентифицировать любой метод XML-RPC, который запускается с помощью "ключа API", который я сохранил в таблице базы данных. Если бы у меня была традиционная настройка MVC ZF, я бы использовал плагин контроллера для автоматической проверки подлинности, но у меня нет такой возможности. Мое единственное решение сейчас - вручную вставить код в каждый метод API для проверки подлинности.

Есть какие-нибудь мысли о более прагматичном способе решения этой проблемы? Я бы предпочел не иметь кучу повторяющегося кода в верхней части каждого метода.

Author: Charles, 2009-12-21

1 answers

Несколько способов решения 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. это "путь зенда".

Или вы можете написать пользовательский AuthAdaper.it это просто:)

ОБНОВЛЕНИЕ 1:

Прочтите это внимательно

 2
Author: SMka, 2009-12-21 09:54:34