Таблица сессий Zend, как сохранить user_id рядом со стандартным материалом? - PullRequest
0 голосов
/ 11 марта 2011

я использую http://framework.zend.com/manual/en/zend.session.savehandler.dbtable.html,

проблема в том, что когда я удаляю пользователя, я хочу удалить его сеанс, чтобы выйти из него , но я не знаю, что это за сеанс ...

Я не могу найти способ добавить пользовательский столбец в параметры таблицы сеанса Zend, чтобы он сохранил идентификатор пользователя

1 Ответ

0 голосов
/ 25 марта 2011

Вы должны использовать Zend_Auth. Вы можете использовать

Zend_Auth::getInstance ()->clearIdentity ();

чтобы выйти из системы.

Вот так выглядит мой AuthenticationController:

class Default_AuthenticationController extends Zend_Controller_Action {

    public function init() {
    }

    public function loginAction() {
        if (Zend_Auth::getInstance ()->hasIdentity ()) {
            $this->_redirect ( 'index/index' );
        }

        $request = $this->getRequest ();
        $form = new Default_Form_LoginForm ();

        if ($request->isPost ()) {
            if ($request->getPost ( 'username' ) != "") {

                $username = $request->getPost ( 'username' );
                $password = $request->getPost ( 'password' );

                $authAdapter = $this->getAuthAdapter ();
            $authAdapter->setIdentity ( $username )
                                        ->setCredential ( $password );
            $auth = Zend_Auth::getInstance ();
            $result = $auth->authenticate ( $authAdapter );
            }
        }
        $this->view->form = $form;
    }

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

    private function getAuthAdapter() {
        $authAdapter = new Zend_Auth_Adapter_DbTable ( 
                           Zend_Db_Table::getDefaultAdapter () );

        $authAdapter->setTableName ( 'users' )
                         ->setIdentityColumn ( 'email' )
                         ->setCredentialColumn ( 'password' )
                         ->setCredentialTreatment ( 'SHA1(CONCAT(?,salt))' );

        return $authAdapter;
    }
}

Смотрите это КАК для получения более подробной информации.

...