Методы аутентификации для сервера Zend Framework XML-RPC - PullRequest
4 голосов
/ 21 декабря 2009

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

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

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

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

1 Ответ

2 голосов
/ 21 декабря 2009

несколько способов решения q

  1. проще всего создать в Bootstrap Reqest Object вручную и проверить заголовки

    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:

Внимательно прочитайте

...