我目前正在开发一个在Firefox上运行的网站。
我的程序中有一个拦截器拦截所有请求并判断cookie值是否为登录状态。如果未登录状态,则重定向到登录页面。
当Firefox启动时,我的Firefox设置为“从上次显示我的窗口和标签页”。
我登录网站并直接关闭Firefox。但是当我重新打开Firefox时,它仍然处于登录状态。
我该怎么做才能避免这个问题?
答案 0 :(得分:0)
本主题可能会让您深入了解Firefox Cookie处理:Firefox session cookies
此外,问题中没有明确说明您想要实现什么目标。如果您有兴趣仅为自己解决问题,请考虑更改Firefox模式。如果您想为任何基于Firefox的网站用户修复它,请考虑提及您用于创建网站的技术。
UPD: One the one hand,
未在Cookie上指定Expires值将导致在浏览器会话结束时删除Cookie,即当用户关闭浏览器时。
另一方面,正如post above中所述,Firefox以稍微不同的方式处理cookie。
因此,您可以使用短Cookie Expires值,并在用户上线时定期更新。
您也可以use unload
and onbeforeunload
events,它可以帮助您通过关闭标签或转到其他地址来检测离开网站。
以下型号也是可能的:
在客户端:
once a user opens a new tab,
some ID is given to this in js code,
and that ID is sent to the server as an ID to create;
once a tab is closed,
its ID is sent to server by js code as an ID to remove;
在服务器端:
once a server receives an ID to create,
it generates a session ID and returns it to a client;
once a server receives an ID to remove,
it checks, if there are any more tab IDs left,
if there are some, it just removes a tab ID from an array of those IDs;
if there are no more, it removes the session and clears its tab IDs array;