我没有多少Zend经验,并希望在Zend中更改某人的登录代码,以使会话不会过期。
似乎代码是基本行为:
$adapter = $this->getAuthService()->getAdapter();
$adapter->setIdentity($email)->setCredential($password);
$result = $this->getAuthService()->authenticate();
如何使会话过期或至少将会话设置为特定时间,我该怎么做?
现在用户并没有长时间保持登录状态,我想也许这只是依赖于默认的php设置行为,比如gc_maxlifetime的标准24分钟。
Zend_Session和AuthService之间有什么联系?
答案 0 :(得分:1)
我认为您需要的是延长会话cookie的生命周期。为此,您可以使用rememberMe()
功能。在验证用户身份后执行此操作:
Zend_Session::rememberMe(1209600); //1209600/3600 = 336 hours => 336/24 = 14 days
但延长会话cookie生命周期不会产生影响,因为服务器在gc_maxlifetime
时间过后不会识别该cookie。
要解决此问题,您必须确保PHP session.gc_maxlifetime
设置至少与传递给rememberMe()
的值相同。
我不知道这是不是很好,但你可以增加PHP Session Garbage Collection Time
。
在Bootstrap.php
文件中,您可以执行以下操作:
protected function __initSession() {
ini_set('session.gc_maxlifetime', 1209600); // maxlifetime = 14 days
ini_set('session.gc_divisor', 1);
Zend_Session::start();
}
或在.htaccess
档案中:( 14天)
php_value session.gc_maxlifetime 1209600
希望这有帮助。
答案 1 :(得分:0)
以下是如何设置会话超时:
$session = new Zend_Session_Namespace( 'Zend_Auth' );
$session->setExpirationSeconds( 60 ); // 60 seconds
答案 2 :(得分:0)
以下是如何设置会话超时:
$session = new Zend_Session_Namespace( 'Zend_Auth' );
$session->setExpirationSeconds( 60 ); // 60 seconds
这对我很有用。