8

プロジェクトの1つにZend_Authを使用していますが、これまでのところ、セッションのライフタイムを設定する方法や、セッションを延長する方法を理解していません(たとえば、5分間実行し、ユーザーがアクションを実行したときにリセットする必要があります)。 )、これが私の初期化コードです:

        $authAdapter = new Zend_Auth_Adapter_DbTable($this->_model->pdo);
        $authAdapter->setTableName('normal_folks')
           ->setIdentityColumn('username')
           ->setCredentialColumn('password');

        $post = $this->_request->getPost();

        $authAdapter->setIdentity($post['username'])
            ->setCredential($post['password']);
        $auth = Zend_Auth::getInstance();
        $result = $auth->authenticate($authAdapter);

        if($result->isValid())
        {
            $userInfo = $authAdapter->getResultRowObject(null, 'password');
            $authStorage = $auth->getStorage();
            $authStorage->write($userInfo);

            if(strlen($post['refferer']) > 1){
                header("Location: ".$post['refferer']);
            }elseif(strlen($this->_request->getParam('ref_action')) > 1){
                Zend_Controller_Action::_forward($this->_request->getParam('ref_action'),"admin",null,null);
            }else{
                Zend_Controller_Action::_forward("index","admin",null,null);
            }
        }

これは、ユーザーがログインしているかどうかを確認する方法です。

                if(Zend_Auth::getInstance()->hasIdentity()){
                    echo "Woho!";
                }else{
                    die("invalid-identity");
                }

それはおそらく私の目の前にありますが、私はそれを理解することができません、助けて?お願いします?かなりお願いしますか?:D

4

2 に答える 2

14

認証状態は、登録された認証ストレージに保存されます。デフォルトでは、これはですZend_Session名前空間に有効期限を設定Zend_Authできます。例:

$namespace = new Zend_Session_Namespace('Zend_Auth');
$namespace->setExpirationSeconds(300);

を介してグローバルに構成Zend_Sessionすることもできます

Zend_Session::setOptions(array(
    'cookie_lifetime' => 300,
    'gc_maxlifetime'  => 300));
于 2010-10-15T08:20:30.340 に答える
2

zend_authセッションに異なる名前空間を使用している場合は、次のように実行できます。

$auth = Zend_Auth::getInstance ();
$auth->setStorage ( new Zend_Auth_Storage_Session ( 'user' ) );

$namespace = new Zend_Session_Namespace('user');
$namespace->setExpirationSeconds(7200); // 2 hours
于 2015-06-11T14:10:40.220 に答える