1

我试图防止多个同时登录,如果第一个用户已经登录,它将阻止第二个用户在另一个选项卡上登录,我需要关于我应该做什么的建议,基于谷歌,我可以使用 localstorage 和 authguard,并且有两者都实施但没有解决问题,

身份验证.service.ts

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

登录组件.ts

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

当第一个用户已经登录时,通过粘贴登录网址打开第二个选项卡,它可以工作,登录将重定向到用户设置,但是当登录页面已经准备好两个选项卡时,当第一个用户登录时,第二个用户也可以使用不同的登录帐户。

4

2 回答 2

2

当您将数据设置为localStorage我们需要检查是否有任何用户已经登录。

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

我认为这将解决您的问题:)

于 2018-12-05T12:18:55.923 回答
0

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

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


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

于 2018-12-05T12:11:56.317 回答