AWS Cognito用户会话到期

时间:2020-05-24 17:58:09

标签: angular typescript amazon-cognito

我创建了一个Angular 9 Web应用程序,该应用程序使用AWS Cognito处理用户登录和会话。但是,当经过身份验证的用户尝试在令牌过期后(即1小时后)加载网页时,我会在通过getCurrentUser()检索CognitoUser属性后检索并收到错误消息。

我开发了一个名为“ api”的服务,该服务通过getAuthenticatedUser()函数返回CognitoUser:

api.service.ts:

getAuthenticatedUser(): Observable<CognitoUser> {

const myUser = userPool.getCurrentUser();

if (myUser != null) {
  //Do some stuff <-- THIS IS ALWAYS SUCCESSFULLY EXECUTED
} else {
  console.log('Returned null!!');
}

const result = new BehaviorSubject(myUser);
result.next(myUser);
return result; }

然后我在第一个加载的组件的ngOnInit期间调用此函数:

login.component.ts:

ngOnInit() {
this.api.getAuthenticatedUser().subscribe(authenticatedUser => {
  console.log('login')
  console.log(authenticatedUser);
  console.log(authenticatedUser['signInUserSession']); // <-- THIS RETURNS NULL WHEN FIRST LOADED
  console.log(authenticatedUser['signInUserSession']['idToken']); // FOR SOME REASON THIS IS NOT EXECUTED THE FIRST TIME

  // --> THE LINE BELOW RETURNS AN ERROR
  if (authenticatedUser && authenticatedUser.hasOwnProperty('signInUserSession')) {
       //Do some stuff
    } else {
      //Do other stuff
    }
  }
}); }

由于某种原因,我能够检索和打印值“ authenticatedUser”,但不能打印以下值。另外,当我到达if语句时,我收到一条错误消息,指出authenticatedUser不应为空时显示为空:

Console logs prior to user refresh

但是,在刷新页面后,即使检索到的项目看起来相同,一切也会按预期进行:

Console logs after simple browser refresh

您知道什么可能导致这种行为吗?我觉得我缺少一些我应该订阅的异步功能。

请让我知道是否需要其他信息

0 个答案:

没有答案