2013-07-16 93 views
3

我想將會話超時增加到大約24小時,爲此我搜索了網絡,但沒有任何幫助我解決。 目前我的網站約40分鐘後,這是到期後,我想使這個24小時。 在我core.php中我添加這些行會話超時不起作用+ cakephp

Configure::write('Session.timeout', '864'); // Session will last 24h 
Configure::write('Session.autoRegenerate',true); 
Configure::write('Security.level', 'medium'); 

任何想法或sugesstion。

+0

可能重複:http://stackoverflow.com/questions/9292890/modify-session-cookie-expiry-and-session-timeout-for-a-cakephp-session/ – trante

回答

4

CakeSession配置參數的命名很混亂,並且它們的設置並不總是一致的(例如見下文)。

1)Configure::write('Session.timeout', 'XXX');分鐘會話的持續時間。所以如果你想要它持續24小時,把它設置爲24 * 60。

2)Configure::write('Session.autoRegenerate',true);沒有鏈接到'Session.timeout' - 即使Cake文檔暗示它是。 autoRegenerate取決於CakeSession::$requestCountdown值。 $requestCountdown頁面瀏覽量重新生成會話ID之前。它不是基於時間的。

所以這裏出現的不一致性:我們如何設置CakeSession::$requestCountdown值?與其他參數不一樣。您可以通過設置它引導:

App::uses('CakeSession', 'Model/Datasource'); 
CakeSession::$requestCountdown = 25; 

此值無法通過配置來設置像其他PARAMS(如V2.4的)。看到我在此打開的票證確認以上是預期用法:https://github.com/cakephp/cakephp/issues/2078

3)Configure::write('Security.level', '?????');自從Cake 2.0以來已被刪除。

裁判: http://book.cakephp.org/2.0/en/development/sessions.html

+0

謝謝把這些東西作爲CakePHP的新手來清除我。現在有任何其他備用來設置session.timeout。我希望如果用戶在2小時內不活動,會話將在兩小時前失效。目前只有40分鐘。 – Jpm

+0

這沒有內置的Cake功能。您必須在會話中存儲「上次訪問時間」,然後在每個頁面視圖上將該時間與當前時間進行比較,如果差異大於2小時,則手動將其註銷(請參閱「示例# 1「在http://www.php.net/manual/en/function.session-destroy.php一個可靠的方法做到這一點) – Costa