Noe*_*ott 11 amazon-cognito aws-sdk-js
每当尝试使用 AWS Cognito 响应 NEW_PASSWORD_REQUIRED 质询时,已经成功运行了几年的应用程序就会开始抛出以下错误:
{"__type":"NotAuthorizedException","message":"无法修改已提供的电子邮件"}
我正在发送以下内容,这些内容似乎都与文档相符。
{
"ChallengeName": "NEW_PASSWORD_REQUIRED",
"ClientId": <client_id>,
"ChallengeResponses": {
"userAttributes.email": "test@example.com",
"NEW_PASSWORD": "testP@55w0rd",
"USERNAME": "testfake"
},
"Session": <session_id>
}
Run Code Online (Sandbox Code Playgroud)
前端没有任何改变;我们在 Cognito/AWS 端所做的配置更改是否可能导致此错误?
dqr*_*rjz 18
我最近开始遇到同样的错误。我正在关注用例 23 对用户进行身份验证并为用户设置新密码。经过一番调查,我发现这是导致抛出错误的email属性。我得到的曾经是一个空对象,但现在看起来像这样:userAttributescompleteNewPasswordChallengeuserAttributesauthenticateUser{}
{ email_verified: 'true', email: 'test@example.com' }
Run Code Online (Sandbox Code Playgroud)
email在将email_verifieduserAttribute 用于completeNewPasswordChallenge. 所以我的代码现在是这样的:
cognitoUser.authenticateUser(authenticationDetails, {
...
newPasswordRequired: function(userAttributes, requiredAttributes) {
// the api doesn't accept this field back
delete userAttributes.email_verified;
delete userAttributes.email; // <--- add this line
// store userAttributes on global variable
sessionUserAttributes = userAttributes;
}
});
// ... handle new password flow on your app
handleNewPassword(newPassword) {
cognitoUser.completeNewPasswordChallenge(newPassword, sessionUserAttributes);
}
Run Code Online (Sandbox Code Playgroud)
我猜 aws 最近更改了他们的 api,但我还没有找到任何关于此更改的文档。即使该email属性的值与用户的实际电子邮件相同,Cannot modify an already provided email如果您将其包含在请求中,它也会引发错误。删除它可以解决该问题。
| 归档时间: |
|
| 查看次数: |
4866 次 |
| 最近记录: |