身份验证后的 AWS Cognito getCurrentUser() 且无需刷新

Pat*_*erí 5 amazon-web-services amazon-cognito

我正在尝试在身份验证后立即更新用户的属性。身份验证工作正常,我可以用它检索用户属性。但问题是var cognitoUser = getUserPool().getCurrentUser();返回null。如何检索当前用户,以便能够更新属性而不刷新浏览器?

也许另一个问题是,如何使用 accessToken 在当前用户上运行函数而不刷新浏览器?

var cognitoUser = getUserPool().getCurrentUser();
  if (cognitoUser != null) {
    cognitoUser.getSession(function(err, session) {
      if ( err ) {
        console.log(err);
        return;
      }else if( session.isValid() ){
        updateUserAttribute( cognitoUser, 'custom:attr', attr )
      }
    });

  }else{
    console.log('Cognito User is null');
    return;
  }
Run Code Online (Sandbox Code Playgroud)

Ion*_*ian 0

var cognitoUser = getUserPool().getCurrentUser();
Run Code Online (Sandbox Code Playgroud)

如果用户池初始化正确,那么应该返回最后一个经过身份验证的用户。身份验证成功后,我们将输入客户端 ID 的用户保存到本地存储。每当您调用 getCurrentUser 时,它都会从本地存储中检索上次经过身份验证的特定用户。令牌以该用户和客户端 ID 为关键。身份验证成功后,它们也会保存到本地存储。访问访问令牌应该只是:

cognitoUser.getSignInUserSession().getAccessToken().getJwtToken())
Run Code Online (Sandbox Code Playgroud)

您可以直接将令牌用于 CognitoIdentityServiceProvider 客户端中公开的操作。