[英]How to set the session timeout in Zend Framework 2
我沒有太多的Zend經驗,並且想要在Zend中更改某人的登錄代碼以使會話不會過期。
看來代碼是基本行為:
$adapter = $this->getAuthService()->getAdapter();
$adapter->setIdentity($email)->setCredential($password);
$result = $this->getAuthService()->authenticate();
我該怎么做才能使會話不過期或至少將會話設置為特定時間?
現在,用戶不會長時間保持登錄狀態,我認為這可能只是依賴默認的php設置行為,例如gc_maxlifetime的標准24分鍾行為。
Zend_Session和AuthService之間有什么聯系?
我認為您需要延長會話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
希望這可以幫助。
這是設置會話超時的方法:
$session = new Zend_Session_Namespace( 'Zend_Auth' );
$session->setExpirationSeconds( 60 ); // 60 seconds
這是設置會話超時的方法:
$session = new Zend_Session_Namespace( 'Zend_Auth' );
$session->setExpirationSeconds( 60 ); // 60 seconds
這對我來說很棒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.