项目场景:
在实现单点登录时,发现关闭浏览器后,并不会自动退出登录
解决方案:在app.vue中书写如下代码
data() {
return {
gap_time: 0,
beforeUnload_time: 0,
};
},
methods: {
// 关闭窗口之前执行
beforeunloadHandler() {
this.beforeUnload_time = new Date().getTime();
},
unloadHandler() {
this.gap_time = new Date().getTime() - this.beforeUnload_time;
//判断是窗口关闭还是刷新 毫秒数判断 网上大部分写的是5
if (this.gap_time <= 10) {
logOut() // 退出登录接口 这里应当换为个人的登出方法
} else {
}
},
},
destroyed() {
// 移除监听
window.removeEventListener("beforeunload", () => this.beforeunloadHandler());
window.removeEventListener("unload", () => this.unloadHandler());
},
mounted() {
// 监听浏览器关闭
window.addEventListener("beforeunload", () => this.beforeunloadHandler());
window.addEventListener("unload", () => this.unloadHandler());
}
然后,再关闭浏览器后,就会自动调用我们的退出登录函数了。