2013-06-21 91 views
1

我正在使用CakePHP 1.3,並且會話超時有很多麻煩。CakePHP - 會話超時 - 空閒用戶

所以,這裏是我的core.php文件。

Configure::write('Session.save', 'cake'); 
Configure::write('Session.cookie', 'TESTING'); 
Configure::write('Session.timeout', '0.01'); 
Configure::write('Session.start', true); 
Configure::write('Session.checkAgent', false); 
Configure::write('Security.level', 'low'); 

這裏談到的第一個問題,關於session.timwout它被指定爲秒,但如果我使用的低,讓5個小時我的cookie過期把1(?)。使用這個設置我得到3分鐘cookie過期,我不明白,它應該是1×300秒= 5分鐘。那是什麼樣的數學?

而主要的問題是,這是不被尊重,當我登錄到我的網站,我可以看到它產生一個會話,並在3分鐘內過期,但只要我登錄並點擊一個鏈接,我回來了到登錄頁面,這意味着我得到不到30秒的身份驗證。

我想設置這樣一個低值進行測試,我知道高和中等安全值重新請求之間的會話,但我想了解發生了什麼事。

非常感謝。

回答

1

會話生存期和Cookie生存期不相等。 Session lifetime

Security::inactiveMins() * Configure::read('Session.timeout') 

計算,其中爲cookie lifetime

Configure::read('Session.timeout') * (Security::inactiveMins() * 60) 

計算等等low1導致的300秒會話生命期的會話超時的安全級別,以及cookie的生命的18000秒,即5小時。

當使用0.01秒超時時,會話有效期爲3秒,cookie的有效期爲180秒,因此您的註銷速度如此之快。

正如你親自體驗過的那樣,沒有必要擔心更長的cookie生命週期(我想這是爲了防止cookie在會話超時前失效,但我可能會錯誤),一旦會話超時,cookie是being invalidated,最後是overwritten

+0

嗨@ndm,感謝您的回覆,我需要做一些測試,並且我想將session lefetime設置爲5分鐘,爲了獲得該值,我將session.timeout設置爲1,並將安全級別設置爲低。 1 * 300 = 300秒或5分鐘!但是當我檢查cookie時,它會設置5個小時,如果我在會話的5分鐘後發送一些帖子,它仍然有效,我想我應該已經註銷了,對嗎? – Jeff

+0

對不起,當然我會'5'小時(我編輯了我的答案)。 '5'小時的Cookie使用期限是正確的,是的,無論Cookie使用期限是多長,在'5分鐘會話超時後應該註銷。我剛剛用你的價值觀試了一下,它的效果很好,會議在'5分鐘'不活動之後就開始無效了,我正在註銷。您的應用可能會發送自動化的AJAX請求,導致超時更新? – ndm

+0

哦,是的!在頁面上有一個專門用於避免超時的AJAX!感謝噸@ndm,我會刪除它,並做我的測試! =) – Jeff