在使用 Cognito 几个月后,用户池中的一些用户现在丢失了“email_verified”属性。我无法理解它是如何丢失或如何恢复的。
症状是:
- 用户仍然可以登录
- 用户密码无法更改(例如,通过JS SDK - changePassword),产生错误:“x-amzn-errormessage:无法为用户重置密码,因为没有注册/验证的电子邮件或电话号码”
使用list-users CLI获取用户的用户属性显示缺少该属性
aws cognito-idp list-users --user-pool-id MYID-123 --query 'Users[?Username==`error@bla.com`].[*]' [ [ [ "error@bla.com", true, "CONFIRMED", 1522127817.526, 1522127819.369, [ { "Name": "sub", "Value": "123123123341241238" }, { "Name": "email", "Value": "bla@bla.com" } ] ] ] ]
与一个具有适当属性的
aws cognito-idp list-users --user-pool-id MYID-123 --query 'Users[?Username==`bla@bla.com`].[*]' [ [ [ "bla@bla.com", true, "CONFIRMED", 1524048734.588, 1524048737.777, [ { "Name": "sub", "Value": "1231231231231235" }, { "Name": "email_verified", "Value": "true" }, { "Name": "email", "Value": "bla@bla.com" } ] ] ] ]
如果我尝试删除该属性(具有足够的权限),它会失败 - 正如人们所期望的那样 - 解释它不是可变的。
aws cognito-idp admin-delete-user-attributes --user-pool-id MYID-123 --username test2@test.com --user-attribute-names email_verified
An error occurred (InvalidParameterException) when calling the AdminDeleteUserAttributes operation: Cannot modify the non-mutable attribute email_verified