簡體   English   中英

如何在Zend Framework 2中設置會話超時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM