如何判断用户是否登出?
系统的日志需要登录和登出闭环,即有一个用户登录日志,就需要有一条登出日志。如果用户通过登出按钮手动登出,触发登出接口是没问题的。但是大多数用户,包括我自己都是直接点击x,关闭系统。于是我监听了beforeunload事件,想在这里发登出请求。现在遇到两个问题,一是:刷新也会触发这个事件。二是:触发这个事件后的弹窗重新加载是刷新弹出的,离开时关闭弹出的,我只想在点击离开的时候触发登出,重新加载和取消不触发该怎么办?我看了mdn关于这个事件的描述,好像这个事件没办法区分关闭和刷新,而且离开和取消也没有回调。唯一能做的就是阻止离开。是不是思路错了,有其他办法可以实现吗?比如说后端?
回复
1个回答
test
2024-06-30
我觉得,要么设计有问题,要么你理解有问题。从浏览器的角度来考虑:
- 用户即使不登出,cookie、token 也会过期,到时候也需要再次登录,所以不可能一一对应
- 用户离开页面,并不会让 cookie、token 都过期,如果关闭的间隔补偿,再次返回还能继续使用
beforeunload
的设计动机是避免丢失用户的操作,用在这里也不合适。- 还有多 tab 的状态管理,也跟你们的要求是冲突的。
我建议从头梳理一下你们的需求、目标和可接受的范围,然后设计技术方案去满足。
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容