2014-02-28 66 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