2014-02-28 67 views
3

我使用的是Symfony2,我想在關閉瀏覽器後註銷用戶。關閉瀏覽器後清除緩存 - symfony2

我已經將config.yml中的cookie_lifetime更改爲0,但仍然無法正常工作。

的理念是:

  • 如果用戶不使用記得我,我想問問他的情況下登錄的他關閉瀏覽器,然後重新打開。
+0

你的配置看起來不錯。您在更改配置後是否清除了symfony緩存? – Ramesh

+0

我認爲這不是緩存問題。這是因爲php會保存會話,所以您必須清除會話,而不是symfony緩存。 –

+0

您在更改後是否清除了您的**瀏覽器cookie **? – nifr

回答

0

我假設您使用的是Chrome瀏覽器。 Chrome瀏覽器在清除此類cookies方面存在問題(請參閱discussion

其他瀏覽器(FF,Safari)可正常工作,並在瀏覽器關閉時刪除cookie,請自行嘗試。

+0

完美!@Dmitry斯克里亞賓。 – Canela

+0

斯克里亞賓。 我檢查,並不僅僅是Chrome有此行爲。 事情發生,因爲我用的是選擇「繼續運行後臺應用時,谷歌Chrome已關閉「,以便在瀏覽器關閉時檢查我的電子郵件。 我禁用此選項後,Chrome停止保留我的臨時cookie。 – Canela

0

我發現沒有真正可靠的方法來檢查瀏覽器窗口/選項卡是否已關閉,即使您使用cookie的生命期爲0,這是由於某些瀏覽器處理Cookie的方式。

然而,另一個 - 顯然不總是可靠的方法來檢查窗口/標籤是否關閉使用JavaScript的卸載事件。

兩者的組合應該會給你最好的結果。

範例 - 香草JavaScript的:

window.onbeforeunload = function(){ 
    // send ajax request to invalidate the session 
}; 

...或...

window.unload = function(){ 
    // send ajax request to invalidate the session 
}; 

示例 - jQuery的:

$(window).bind('beforeunload', function(){ 
    // send ajax request to invalidate the session 
}); 

...或...

$(window).unload(function(){ 
    // send ajax request to invalidate the session 
}); 

更多信息可在this question中找到。

+1

uhm,你不必做兩次ajax調用,使用'beforeunload'(首選)或'unload'函數雖然cookie應該(如果OP使用cookies) – KarelG

+0

Jeah我看到這是誤解...我只是想包括所有可用的選項。更新了答案。謝謝指出。 – nifr

+0

謝謝! 我檢查了問題在瀏覽器:( 請參閱下面的答案。 – Canela