关闭浏览器后清除缓存 - Symfony2

3

我正在使用Symfony2,希望用户关闭浏览器后能够注销。

我已经在config.yml中将cookie_lifetime更改为0,但仍然无效。

想法是:

  • 如果用户不使用“记住我”,则希望在关闭并重新打开浏览器时要求其登录。

你的配置看起来没问题。你在修改配置后清除了Symfony缓存吗? - Ramesh
我认为这不是缓存问题。这是因为PHP保存了会话,所以您必须清除会话,而不是Symfony缓存。 - Dmitry Skryabin
你在修改后清除了浏览器的cookies吗? - Nicolai Fröhlich
谢谢! 我检查了,问题是浏览器的原因 :( 请看下面的答案。 - Canela
2个回答

0
我发现即使使用0的cookie生存期,由于某些浏览器处理cookie的方式,也没有真正可靠的方法来检查浏览器窗口/选项卡是否已关闭。
然而,另一种显然不总是可靠的方法来检查窗口/选项卡是否已关闭是使用JavaScript的unload事件。
两者的结合应该给出最好的结果。
示例 - 原始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
});

更多信息可以在这个问题中找到。


1
嗯,您不必两次调用ajax。使用beforeunload(首选)或unload函数即可。虽然还应该检查cookie(如果OP正在使用cookie)。 - KarelG
是的,我明白那可能会被误解... 我只是想包括所有可用的选项。已更新答案。谢谢指出。 - Nicolai Fröhlich
谢谢! 我检查了,问题是浏览器:( 请看下面的答案。 - Canela

0

我猜你正在使用Chrome浏览器。Chrome在清除此类cookie时存在问题(请参见讨论

其他浏览器(如FF,Safari)运行良好,并在浏览器关闭时删除cookie,请自行尝试。


太棒了!@Dmitry Skryabin。 - Canela
我检查了一下,只有Chrome有这种行为。这是因为我使用了选项“在关闭Google Chrome时继续运行后台应用程序”,以便在浏览器关闭时继续检查我的电子邮件。在我禁用此选项后,Chrome停止保留我的临时Cookie。 - Canela

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接