目标是在网页关闭是logout,刷新时不logout
没找到太好的办法,关闭和刷新时都会执行beforeunload->unload事件。
想到一个折衷方案:
1.unload的时候把事件保存在localStorage中
2.load的时候从localStorage中取出事件,计算时间差,差值在自定义的最大刷新时间以上(这里5秒)的话,就认为是需要logout
@HostListener('window:load', ['$event'])
onLoad(event: any) {
let lastestLeaveTime = new Date().getTime();
let lastestLeaveTimeStorage = localStorage.getItem('lastestLeaveTime');
if (lastestLeaveTimeStorage) {
lastestLeaveTime = parseInt(lastestLeaveTimeStorage, 10);
localStorage.removeItem('lastestLeaveTimeStorage');
}
let differTime = new Date().getTime() - lastestLeaveTime;
if (differTime >= 5*1000) {
this.authService.logout();
}
}
@HostListener('window:unload', ['$event'])
onUnload(event: any) {
localStorage.setItem('lastestLeaveTime', `${new Date().getTime()}`);
}
网友评论