Php 使用Zend_Auth设置和延长会话生存期

Php 使用Zend_Auth设置和延长会话生存期,php,zend-framework,session,zend-auth,lifetime,Php,Zend Framework,Session,Zend Auth,Lifetime,我在我的一个项目中使用Zend_Auth,但到目前为止,我还没有弄清楚如何设置会话的生存期,或者如何扩展它(假设它应该运行5分钟,并且在用户执行操作时应该重置为该生存期),以下是我的初始化代码: $authAdapter = new Zend_Auth_Adapter_DbTable($this->_model->pdo); $authAdapter->setTableName('normal_folks') ->se

我在我的一个项目中使用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);
            }
        }
Ant检查用户是否登录的方法如下:

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

它可能就在我面前,但我就是想不出来,帮帮忙?请漂亮吗D

身份验证状态存储在已注册的身份验证存储器中。默认情况下,这是
Zend_会话
。你可以,例如

你也可以通过


如果您对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

还有什么我可以“刷新”一个操作的生命周期吗?@Hannes我想过期时间会随着每个请求自动刷新,所以简单地更新页面会给你另外300秒。顺便说一句。小的打字错误;)<代码>$namespace=新Zend_会话_名称空间('Zend_Auth')是的,你是对的,每次调用它时它都会重置,不管出于什么原因,你的第二个解决方案不起作用(将它放入init())-但是第一个解决方案非常有效:D非常感谢!感谢您的awnser,尽管我无法验证它,因为有问题的应用程序已不再维护
Zend_Session::setOptions(array(
    'cookie_lifetime' => 300,
    'gc_maxlifetime'  => 300));
$auth = Zend_Auth::getInstance ();
$auth->setStorage ( new Zend_Auth_Storage_Session ( 'user' ) );

$namespace = new Zend_Session_Namespace('user');
$namespace->setExpirationSeconds(7200); // 2 hours