Angular 2:当用户在其中一个注销时自动注销所有打开的选项卡

时间:2017-09-12 07:29:10

标签: angular

我已根据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;
  }

1 个答案:

答案 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