网站搜索

angular - 如果第一个用户已经登录,如何防止第二个用户在另一个标签页登录


我正在尝试防止多重同时登录,即如果第一个用户已经登录,它将阻止第二个用户在另一个标签页登录。我需要关于我应该做什么的建议。根据谷歌,我可以使用本地存储和认证守卫,并且已经实现了这两者,但问题仍未解决。

authentication.service.ts

isUserAuthenticated(): boolean {
    const user = localStorage.getItem(appConstant.currentUser);
    return user != null;
}

login.component.ts

ngOnInit(): void {
if (this.authenService.isUserAuthenticated()) {
  this.router.navigate([UrlConstants.UserSetting])
 }
}

当第一个用户已经登录时,通过粘贴登录 URL 打开第二个标签页,它可以工作,登录会重定向到用户设置,但当登录页面在两个标签页中都已准备好时,当第一个用户登录时,第二个用户也可以使用不同的账号登录。

答案#1

当你将数据设置到 localStorage 时,我们需要检查是否已经有用户登录。

isUserAuthenticated(): boolean {
  if(localStorage.getItem(currentUser) != null)    
       return true;
  else {
     localStorage.setItem('currentUser',user);
       return false;
    }
  }

我认为这会解决你的问题 :)

答案#2

根据你的需求,你应该在 localStorage 中存储一个变量,例如:

totalUsers: number =0;
localStorage.setItem('totalUsersCount', totalUsers);

每次成功登录时增加 totalUsers。登出时减少或清除它。因此,在登录时,检查 localstorage 的值是否等于零。如果是,则允许登录。否则,抛出错误。