【发布时间】:2015-09-20 18:25:30
【问题描述】:
我有一个使用护照进行本地身份验证的网络服务器(Nodejs+express+护照)。有谁知道当用户关闭浏览器选项卡时是否会发生某种回调?我希望能够检测到这一点,因为我正在尝试为那些没有明确注销(即通过单击注销)的用户保存注销时间戳。
谢谢!
【问题讨论】:
标签: node.js express passport.js mean-stack passport-local
我有一个使用护照进行本地身份验证的网络服务器(Nodejs+express+护照)。有谁知道当用户关闭浏览器选项卡时是否会发生某种回调?我希望能够检测到这一点,因为我正在尝试为那些没有明确注销(即通过单击注销)的用户保存注销时间戳。
谢谢!
【问题讨论】:
标签: node.js express passport.js mean-stack passport-local
我会要求您先检查有关 SO 的问题,但我认为无法按照您尝试的方式进行操作。好吧,检查这些链接:how to run code on window close or refresh 和 how to detect it was close
基本上你不能。这是许多应用程序向用户显示“上次登录时间”而不是注销时间的原因之一,看看这是否适合您。
关于保存用户的注销时间:我想说根本不存储该值。应根据配置允许会话过期:即使长时间保持不活动状态,用户也可以注销。此类用户的注销时间可以稍后根据他们的最后活动时间(当您刷新用户的会话计时器时,您可以将其存储在每个页面加载/调用服务器上)和会话超时值来计算。现在可以在用户下次登录时或使用后台进程时计算。
【讨论】:
您可以存储用户的lastActivityDate,并假设某用户在 xx 分钟后被视为离线。
您可以尝试在窗口卸载时执行 ajax 调用,但如果用户有两个打开的页面,而他关闭了一个,则数据将为 false。也不确定请求是否到达服务器。
您可以为会话设置一个非常短的过期时间,并在页面打开时执行 ajax 常规 ping 以保持会话打开。
【讨论】: