gpt4 book ai didi

amazon-web-services - 身份验证后的 AWS Cognito getCurrentUser() 无刷新

转载 作者:行者123 更新时间:2023-12-04 00:15:53 25 4
gpt4 key购买 nike

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

也许另一个问题是,如何在不刷新浏览器的情况下使用 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;
}

最佳答案

getUserPool().getCurrentUser() 在本地存储上查找用户,如果返回 null 是因为本地存储还没有设置用户。

为了在本地存储上设置用户,我使用了一个 CognitoAuth 的实例来完成这项工作。

此解决方案使用 Cognito 托管 UI。
在 Cognito UI 返回的回调 url 上:

        import {CognitoAuth} from 'amazon-cognito-auth-js';

var authData = {
UserPoolId: 'us-east-1_xxxxxx',
ClientId: 'xxxxxxx',
RedirectUriSignIn : 'https://examole.com/login',
RedirectUriSignOut : 'https://example.com/logout',
AppWebDomain : 'example.com',
TokenScopesArray: ['email']
};
var auth = new CognitoAuth(authData);
auth.userhandler = {
onSuccess: function(result) {
//you can do something here
},
onFailure: function(err) {
// do somethig if fail
}
};

//get the current URL with the Hash that contain Cognito Tokens tokens
var curUrl = window.location.href;

//This parse the hash and set the user on the local storage.
auth.parseCognitoWebResponse(curUrl);

然后,如果您调用 getUserPool().getCurrentUser() 这不会为空。

关于amazon-web-services - 身份验证后的 AWS Cognito getCurrentUser() 无刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com