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

Sai*_*que 5 amazon-web-services amazon-cognito aws-sdk

我正在构建一个应用程序。在那方面Sign upSignin其他操作都运行良好。但是,当我尝试使用以下代码更改密码时,它说

"Local storage is missing an ID Token, Please authenticate"
Run Code Online (Sandbox Code Playgroud)

代码是:

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...");
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

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

谢谢...

Sai*_*que 7

经过如此多的努力,我发现我每次使用时都会创建新的 Cognito 用户

poolData = {
    UserPoolId: "XXXXXXXXXXXXXXXXX",
    ClientId: "XXXXXXXXXXXXXXXXXXXXXXXX"
};
userPool: CognitoUserPool = new CognitoUserPool(this.poolData);
Run Code Online (Sandbox Code Playgroud)

因此,每当我调用它时,就会创建一个新的认知用户。因此,更改密码对此不起作用。

当我创建一个通用函数来访问cognitoUser和使用相同的到处都对我有用时。

谢谢...