我们有一个场景,我们希望检测用户何时离开我们的站点并立即使他们的 .Net 会话过期。我们正在使用表单身份验证。我们不是在谈论我们已经拥有的会话超时。我们想知道用户何时通过链接、输入地址或关注书签离开了我们的网站。如果他们返回我们的网站,即使是马上,他们也必须重新登录(我知道这不是很好的可用性 - 这是我们客户提出的安全要求)。
我最初的直觉是,这要么是不可能的,要么是任何解决方案都极其不可靠。我们提出的唯一解决方案是:
- 添加一个 JavaScript onBlur 事件处理程序,告诉服务器在用户离开站点时注销会话。
- 用户登录后,检查 HTTP 引荐来源网址以确保用户已从站点内导航。
- 将 AJAX 轮询添加回服务器以保持会话刷新,可能间隔为 10 秒。当未按时收到呼叫时,会话将结束。
onBlur 似乎是最简单但可能最不可靠的方法 - 我不确定它是否会起作用。推荐人方法也存在问题,因为用户可以在网站内输入地址而不点击链接。AJAX 方法似乎可以工作,但它很复杂——我什至不确定如何在后端处理它。我在想可能还有一些情况并不总是有效。
任何想法,将不胜感激。谢谢。