Методы аутентификации для XML-RPC-сервера Zend Framework
У меня есть приложение Zend Framework, единственная цель которого - служить сервером XmlRpc/JSONRPC.
Я в основном следовал философии из этого руководства для моего метода реализации. Я переопределил метод run() моей начальной загрузки, чтобы запустить объект Zend_XmlRpc_Server и прикрепить к нему классы API.
Я хочу аутентифицировать любой метод XML-RPC, который запускается с помощью "ключа API", который я сохранил в таблице базы данных. Если бы у меня была традиционная настройка MVC ZF, я бы использовал плагин контроллера для автоматической проверки подлинности, но у меня нет такой возможности. Мое единственное решение сейчас - вручную вставить код в каждый метод API для проверки подлинности.
Есть какие-нибудь мысли о более прагматичном способе решения этой проблемы? Я бы предпочел не иметь кучу повторяющегося кода в верхней части каждого метода.
1 answers
Несколько способов решения q
-
Проще всего создать в начальной загрузке объект запроса вручную и проверить заголовки
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: