Zend Framework Аутентификация пользователя - PullRequest
4 голосов
/ 29 июля 2009

Какова наилучшая практика для аутентификации веб-сайта пользователя / REST в ZV MVC? Как и куда поместить код в рамках ZF? Можете ли вы предоставить мне пример кода?

У меня есть веб-сайт и REST сервер, написанный на Zend Framework, но не реализован ни один пользовательский сеанс.

THX!

1 Ответ

1 голос
/ 31 января 2011

Аутентификация настраивается в _initAutoload файла начальной загрузки, например, как это:

if(Zend_Auth::getInstance()->hasIdentity()) {
    Zend_Registry::set('role', Zend_Auth::getInstance()
                        ->getStorage()->read()->role);
}else{
    Zend_Registry::set('role', 'guests');
}

В случае REST-аутентификации вам может потребоваться пройти аутентификацию, просто передав параметры входа в систему вместо входа через форму.

Так что это может выглядеть так в вашей AuthenticationController:

private function getAuthAdapter() {
    $authAdapter = new Zend_Auth_Adapter_DbTable(
                       Zend_Db_Table::getDefaultAdapter());
    $authAdapter->setTableName('users') // the db table where users are stored
                ->setIdentityColumn('email')                     
                ->setCredentialColumn('password')
                ->setCredentialTreatment('SHA1(CONCAT(?,salt))');

    return $authAdapter;
}

public function logoutAction() {
    Zend_Auth::getInstance()->clearIdentity();
    $this->_redirect('index/index');
}

public function loginAction(){
    if (Zend_Auth::getInstance()->hasIdentity()){
        $this->_redirect('index/index');
    }
    if ($request->isPost()){
        $username = $request->getPost('username');
        $password = $request->getPost('password');

        if ($username != "" && $password != "") {
            $authAdapter = $this->getAuthAdapter ();
            $authAdapter->setIdentity($username)
                        ->setCredential($password);
            $auth = Zend_Auth::getInstance();
            $result = $auth->authenticate($authAdapter);

            if($result->isValid()){
              $identity = $authAdapter->getResultRowObject();
              $authStorage = $auth->getStorage();
              $authStorage->write($identity);
              $this->_redirect ( 'index/index' );
            } 
       }
   }
}

Если вам нужна дополнительная помощь по zend_auth и zend_acl, вы можете взглянуть на этот как .

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