用户在 AWS 用户池中更改密码时未通过身份验证
User not authenticated on change password in AWS user pool
当时我尝试调用更改密码 API 时,我在 Cognito 用户池中收到用户未验证错误。
嗨,我也一直在努力解决这个问题,终于找到了这个解决方案。
您应该获得经过身份验证的用户
export const GetAuthenticatedUser = () => {
const userPool = new CognitoUserPool({
UserPoolId: process.env.OGNITO_POOL_ID,
ClientId: process.env.COGNITO_CLIENT_ID
});
return userPool.getCurrentUser();
};
那么你应该调用 getSesion() 方法并尝试在它的回调中更改密码,否则它不起作用。
export const ChangePassword = (data) => {
return new Promise((resolve, reject) => {
const currentUser = GetAuthenticatedUser();
if (currentUser) {
currentUser.getSession(function (err, session) {
if (err) {
reject(err);
} else {
currentUser.changePassword(data.old_password, data.password, function (
err,
res
) {
if (err) {
reject(GetCognitoError(err.code + '_ChangePassword'));
} else {
resolve(res);
}
});
}
});
} else {
reject('User is not authenticated')
}
});
};
当时我尝试调用更改密码 API 时,我在 Cognito 用户池中收到用户未验证错误。
嗨,我也一直在努力解决这个问题,终于找到了这个解决方案。
您应该获得经过身份验证的用户
export const GetAuthenticatedUser = () => {
const userPool = new CognitoUserPool({
UserPoolId: process.env.OGNITO_POOL_ID,
ClientId: process.env.COGNITO_CLIENT_ID
});
return userPool.getCurrentUser();
};
那么你应该调用 getSesion() 方法并尝试在它的回调中更改密码,否则它不起作用。
export const ChangePassword = (data) => {
return new Promise((resolve, reject) => {
const currentUser = GetAuthenticatedUser();
if (currentUser) {
currentUser.getSession(function (err, session) {
if (err) {
reject(err);
} else {
currentUser.changePassword(data.old_password, data.password, function (
err,
res
) {
if (err) {
reject(GetCognitoError(err.code + '_ChangePassword'));
} else {
resolve(res);
}
});
}
});
} else {
reject('User is not authenticated')
}
});
};