首页 > 解决方案 > 第一次注销后第二次登录不起作用

问题描述

如果登录凭据正确,我已经编写了一个 API,它返回一个令牌和一个用户 ID。那些我保存到本地存储中,如下所示: 本地存储 如果用户令牌不再有效,我清除本地存储:

localStorage.clear();

登录代码是这样的:

this.http.post('http://localhost:5000/v1/login?username='+username+'&password='+password, JSON.stringify(params)).subscribe(res => {
if(res.token != null)
  {
    this.snackBar.open('Successfully Logged in..', 'x', {
      duration: 2000,
    });
    localStorage.setItem('auth-token', res.token)
    localStorage.setItem('userid', res.userid)
    this.router.navigate(['/dashboard'])
  }
  else{
    this.snackBar.open('User not found or wrong password..', 'x', {
      duration: 2000,
    });
  }
})

我第二次尝试登录本地存储并没有保存任何内容。我很感激任何想法:)

标签: angularauthenticationlocal-storageauth-guard

解决方案


Idia 你可以在登录后返回 json 数据:

/* return backend DATA JSON*/
{
  "isLogin":true,
  "remember_token":'Token'
}

//Angular front-end
isCheckLogin:boolean=false
dataUser:any={}
dataInfo:any={}

//FUNCTION LOGIN
login=()=>{
      this.http.post('http://localhost:5000/v1/login?username='+username+'&password='+password, JSON.stringify(params)).subscribe(res => {
          this.dataUser = res;
          if(this.dataUser.islogin){
            this.isCheckLogin=true;
            localStorage.setItem('auth-token', this.dataUser.remember_token);
          }
      })
}

//FUNCTION CHECKLOGIN
check_login = ()=>{
  let data = localStorage.getItem('auth-token');
  if(data.length>0){
    
    this.http.get("http://http://localhost:5000/v1/user?token="+data).subscribe(item=>{
        this.dataInfo = item;
        this.router.navigate(['/dashboard'])
    });
  
  }
}


推荐阅读