Отдых и ZF сеанс управления - PullRequest
1 голос
/ 10 декабря 2011

Я пытаюсь создать веб-сервис, который использует Zend Framework.API основан на REST и использует Zend_Rest_Controller в качестве базового класса.Я хочу иметь управление пользователями и сеанс, и для этого я использую следующий код: Логин (POST)

// user id and password fetched first

$users = new Application_Model_DbTable_UserInfo();
$auth = Zend_Auth::getInstance();
$authAdapter = new Zend_Auth_Adapter_DbTable($users->getAdapter(),'users');
$authAdapter->setIdentityColumn('userid')
    ->setCredentialColumn('password');
$authAdapter->setIdentity($userid)
    ->setCredential($pwd);
$result = $auth->authenticate($authAdapter);
if($result->isValid()){
    Zend_Session::rememberMe(604800);
    $storage = new Zend_Auth_Storage_Session();
    $usa = $authAdapter->getResultRowObject();
            $auth->getStorage()->write($usa);
    $authSession = new Zend_Session_Namespace('Zend_Auth');
    $authSession->setExpirationSeconds(60*60);            
}

и при доступе к сервису, например, с помощью некоторого метода GET, я хочу проверить, что естьдействительный сеанс со следующим кодом:

$auth = Zend_Auth::getInstance();       
if(!$auth->hasIdentity())
{
    // error handling etc.
}

Я никогда не получаю удостоверение личности, следовательно, служба не работает.

Я достаточно строго следовал инструкциям по аутентификации ZF, но нужны ли для REST дополнительные элементы, которые необходимо учитывать?

1 Ответ

0 голосов
/ 12 декабря 2011

Я знаю, что не отвечаю на ваш вопрос, но если вы ДЕЙСТВИТЕЛЬНО планируете реализовать настоящий интерфейс REST (что подразумевает, что он позволит вам хорошо масштабироваться), вам, вероятно, лучше забыть о сессиях и использовать Zend_Auth в как вы изобразили выше.

Посмотрите здесь, где кое-что об интерфейсах REST и аутентификации уже обсуждалось: Можете ли вы помочь мне понять это? "Распространенные ошибки REST: сессии не имеют значения"

Короче говоря, цитата из приведенного выше потока вопросов и ответов: «Чтобы быть RESTful, каждый запрос HTTP должен нести достаточно информации, чтобы его получатель мог обработать его, чтобы он был в полной гармонии с природой HTTP без сохранения состояния». Я действительно хочу поддержать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...