2023-02-16 308
我正在寻找一种可靠的方法来注销用户或在浏览器关闭时放弃会话.有没有办法使用Tabbed浏览器进行此操作?任何建议都得到了赞赏.谢谢!
在客户端关闭浏览器时,没有可靠的方法来执行此操作.有beforeunload事件,但即使是,当您在此活动期间启动Ajax请求时,它不会保证到达服务器.然后,您仍然存在多个浏览器选项卡的问题.
最可靠的方法是在服务器端(例如1分钟)中具有相对较短的会话超时,并在客户端(例如,每30秒)上引入AjaxBased心跳以保持会话活跃.
可能有更好的方式,具体取决于您认为这是解决方案的唯一功能要求.例如,如果您的实际意图将所有登录到1限制为1,则您最好收集所有登录和关联的会话,然后在每个登录中进行比较,并使较早的会话无效任何现在.这样它也会在禁用JS的客户端上工作.
如果您没有使用cookie以保留您的用户的登录信息,则应 关闭它们关闭浏览器时会显示出来,因为在浏览器关闭时应终止任何会话cookie .
显然,情况并非总是如此(查看firefox保留登录信息的示例注销后)由于”会话还原”功能,我们现在模糊了所认为”单次浏览器会话”之间的行. (就个人而言,我认为这应该被归类为一个错误,但这只是我的意见).
有两种可能的技术.第一个将是(在我面前的yojimbo87提到)使用Web套接字来保持客户端和服务器之间的连接,并且当套接字关闭时,请杀死会话.这里的问题是网络套接字支持是有限的,并且肯定是不可能的,除了出血边缘浏览器(FF4,Chrome,IE9等).
替代方案可以是使用Ajax来不断调用服务器,告诉它仍然被观看页面,因此如果例如,如果每30秒通过AJAX发送保存活请求,则会存储会话中请求的时间戳.如果用户然后返回页面和当前请求之间的时间差和最后一个请求的时间不仅仅是说… 45秒(考虑延迟),您知道用户已关闭浏览器并需要日志再次.
在这两个情况下,然而,有一个致命的缺陷,这就是他们依赖JavaScript.如果用户没有启用JavaScript,则最终会毁坏使用常量登录提示的用户体验,这显然是一个坏主意.
在我看来,我认为在用户关闭浏览器窗口时简单地依赖浏览器删除的会话cookie的合理性,因为这是它们应该执行的操作.当客户端浏览器执行不良行为时,您作为一个开发人员无法归咎于,因为完全从您的手中脱离,而且没有功能性的解决方法.
是一种可行的技术是使用Ajax来经常向您的服务器发送保持活力请求 – 例如每分钟一次.然后,您可以尽快放弃会话,只需按预期收到保存(或少数).
否则,没有可靠的方法来实现这一点.由于浏览器和服务器之间没有持久连接,因此无法检测到您可能在浏览器中运行的任何JavaScript代码的控制的情况.例如,当网络故障时,您可能希望关闭会话,即使仍然打开浏览器的窗口也是如此.因此,为了使系统变得足够强大,您应该检测网络中断作为来自浏览器的保存机制的”副作用”(例如,与Gmail相同).
以上所述是小编给大家介绍的有没有一种可靠的方法可以在浏览器关闭时将用户退出?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/33855.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态