我已根据sessionstorage创建了Login页面。在加载页面时,我检查了sessionstorage的值。如果我在多个选项卡中打开网页,然后从任何一个选项卡注销,则所有剩余页面都应自动注销。
当用户查看页面或说出解决此问题的任何其他方法时,请帮我运行脚本。
点击退出按钮
logout() {
const userLoggedOut = this.loginService.changeStatusLogout(this.isAuthenticated.getLoginStatus(), this.isAuthenticated.getLoggedInUserID());
if (userLoggedOut) {
const link = ['login'];
this.router.navigate(link);
}
}
changeStatusLogout(status: boolean, userID){
if (userID && status) {
sessionStorage.removeItem('userID');
sessionStorage.removeItem('userGroup');
sessionStorage.removeItem('userLogedIn');
return true;
}
}
getLoginStatus() {
const checkStaus = sessionStorage.getItem('userLogedIn');
if (checkStaus === 'true') {
return this.userLoggedIn = true;
}
}
getLoggedInUserIDGroup() {
const loggedInUserGroup = sessionStorage.getItem('userGroup');
return loggedInUserGroup;
}
答案 0 :(得分:1)
当localStorage值发生变化时,您可以使用存储事件通知。
function storageChange (event) {
if(event.key === 'logged_in') {
alert('Logged in: ' + event.newValue)
}} window.addEventListener('storage', storageChange, false)
例如,如果其中一个选项卡注销:
window.sessionStorage.setItem('logged_in', false)
然后所有其他选项卡都会收到一个StorageEvent,并会显示一条警告:
Logged in: false