【问题标题】:Reliable auto logout after an hour一小时后可靠的自动注销
【发布时间】:2013-05-29 14:40:21
【问题描述】:

我有一些 javascript 应该在一小时后注销你,但它有一些问题,首先,它不会在一个小时后注销你,通常大约 20 分钟,其次它不会总是 100% 的时间工作,比如说我让我的电脑通宵开着,有时我仍然登录(可能不在 PHP 会话中)并且在同一页面上。

我有一种感觉,如果屏幕关闭它会暂停 javascript 计数器。

代码是:

var delay = 3600000;
setTimeout(function(){ window.location =  base_url + 'user/logout' }, delay);

有没有更好更可靠的方法来做到这一点?在银行网站上是如何做到的?

编辑:我并不是说这实际上会注销用户,当然那是在服务器端完成的,我只是希望页面在一个小时后自动重定向到登录页面,只是就像银行说的“您因不活动而被注销”。

这是因为我不想让敏感数据在一夜之间留在某人的屏幕上

【问题讨论】:

  • 不能在服务器端定义一小时的会话超时时间吗?
  • 我写的这个脚本将注销非活动用户:phpsnips.com/snip-39#.UaYUJbVwok0
  • 会话确实终止了,IE,如果你转到另一个页面,你会被带回登录页面,但是这些页面上有敏感信息,所以我不希望有人不小心离开页面打开
  • 自动注销不应在客户端。每次用户进行页面加载时,您都应该在服务器端检查它。检查 1. 是否有有效的会话,2. 在此页面加载之前发生最后一次页面加载的时间。
  • 我使用了jquery插件idletimeout,它非常适合空闲屏幕。

标签: php automation logout


【解决方案1】:

您可以在窗口对象上附加焦点和模糊事件处理程序,以跟踪窗口是否获得或失去焦点。

此外,在超时后注销用户是个坏主意(可能存在用户活动、ajax 请求)。最好通过 ajax 请求在服务器端检查会话是否处于活动状态,并且仅在会话过期时,删除文档内容并显示有关会话过期的消息的弹出窗口。

【讨论】:

  • 注意:检查会话状态的服务器端操作不得延长会话生命周期!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 1970-01-01
  • 2013-09-23
  • 2012-07-01
相关资源
最近更新 更多