登录后无限请求

Infinite request after login

我有一个网站,我想在发送凭据到 API(端点)的场景中以编程方式登录。因此,如果我手动登录,该应用程序运行良好。

现在我有一个条件,如果为真,就登录,这个代码在app.component.ts

export class AppComponent {

{
    this.initializeApp();
}

initializeApp() {

    if((this.platform.is('mobileweb') || this.platform.is('desktop')) && this.id == "C3E1EE21-A62C-452F-BE0D-AC3EF5449F23"){
    
              //Authenticate 
              var loginModel: myLoginModel =  
              {
                applicationId: "C1F3A7D7-709D-EB11-A008-00155E00F00B",
                username: "username",
                password: "pwrd5893"
              };
    
              this._auth.login(loginModel).then(token => {
                let user:any = jwt_decode(token);
                user.token = token;
                this.storageService.setItem('user',user);
              }).catch(err => {
                console.log(err);
              });

      this.navController.navigateRoot('myScreen');

    }
}
}

_auth.login 方法在 auth.service.ts:

login(credentials): Promise<any> {
    return this._api.security_post('Login', credentials)
    .then((res: any) => {
      this.storageService.setItem('token',res);
      return res;
    }).catch(e => {
      this.logout();
      return e;
    })
  }

并且 this._api.security_post 用于 auth.login 它在 api.service.ts

security_post(url, data) {
    const promise = new Promise((resolve, reject) => {
      const httpOptions = {
        headers: new HttpHeaders({ 'Content-Type':  'application/json' }),
        responseType: 'text' as 'json'
      };
      this.http.post(this.apiSecurity+'/'+url, data, httpOptions).subscribe(data => {
        resolve(data)
      },error=>{
        reject(error);
      });
    })
    return promise;
  }

所以应用正确登录,但它一直在做无限登录请求

我该如何解决?此致

我猜想以编程方式登录的条件是 this.id == "C3E1EE21-..."?

在那种情况下,我想它会在您的整个应用程序会话中保持 true,因此该块会在每次组件更新时执行。

一个可能的解决方案是添加一个额外的条件,通常是仅当您当前在您的会话中没有已知用户时才登录:

if((
  this.platform.is('mobileweb')
  || this.platform.is('desktop')
) && this.id == "C3E1EE21-..."
&& !this.storageService.getItem('user') ) {
          //Authenticate...
}