Angular 2:当用户注销其中一个选项卡时,自动注销所有打开的选项卡
我已经基于sessionstorage创建了登录页面。在加载页面时,我检查了sessionstorage的值。如果我在多个选项卡中打开网页,然后从其中任何一个选项卡注销,则所有剩余页面都应自动注销 请帮助我运行一个脚本,当用户查看页面或说任何其他方式来解决这个问题 单击注销按钮Angular 2:当用户注销其中一个选项卡时,自动注销所有打开的选项卡,angular,Angular,我已经基于sessionstorage创建了登录页面。在加载页面时,我检查了sessionstorage的值。如果我在多个选项卡中打开网页,然后从其中任何一个选项卡注销,则所有剩余页面都应自动注销 请帮助我运行一个脚本,当用户查看页面或说任何其他方式来解决这个问题 单击注销按钮 logout() { const userLoggedOut = this.loginService.changeStatusLogout(this.isAuthenticated.getLoginStatus(),
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;
}
您可以使用存储事件在更改本地存储值时收到通知
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
我认为您可以在再次登录后加载组件,并在加载时将所有选项卡设置为不可见。