本地存储缺少 ID 令牌,更改密码 Cognito AWS 时请验证错误

Local storage is missing an ID Token, Please authenticate error while changing password Cognito AWS

我正在构建一个应用程序。其中 Sign upSignin 和其他操作工作正常。但是,当我尝试使用以下代码更改密码时,它显示

"Local storage is missing an ID Token, Please authenticate"

代码是:

changePassword(mail: any) {
    var that = this;
    var userPool = new CognitoUserPool(this.poolData);
    var userData: any = {
        Username: mail,
        Pool: userPool
    };
    var cognitoUser = new CognitoUser(userData);
    // To get the session
    cognitoUser.getSession(function (err, session) {
        if (err) {
            alert(err);
            return;
        }
        var userPool = new CognitoUserPool(that.poolData);
        var userData: any = {
            Username: mail,
            Pool: userPool
        };
        var cognitoUser = new CognitoUser(userData);
        var oldp = prompt('Please input old password ', '');
        var newp = prompt('Please input new password ', '');
        cognitoUser.changePassword(oldp, newp, function (err, result) {
            if (err) {
                alert(err.message || JSON.stringify(err));
                return;
            }
            alert("Password successfully changed...");
        });
    });
}

我不确定这有什么问题。请帮我解决这个问题。

谢谢...

经过如此多的努力,我发现每次使用

我都在创建新的 Cognito 用户
poolData = {
    UserPoolId: "XXXXXXXXXXXXXXXXX",
    ClientId: "XXXXXXXXXXXXXXXXXXXXXXXX"
};
userPool: CognitoUserPool = new CognitoUserPool(this.poolData);

因此,每当我调用它时,都会创建一个新的认知用户。因此,对此更改密码无效。

当我创建了一个通用函数来访问 cognitoUser 并且在任何地方都使用相同的函数时,对我来说很有效。

谢谢...