如何使 AWS 用户池中的用户属性可更新?
How to make user attributes from AWS userpool updateable?
我正在尝试使用 AWS Amplify 从 AWS Cognito 用户池中更新用户的属性。
try {
const user = await Auth.currentAuthenticatedUser();
await Auth.updateUserAttributes(user, {
'nickname': 'newtestname'
});
} catch (error) {
console.log(error);
}
但我收到以下错误:
InvalidParameterException: user.nickname: Attribute cannot be updated.
我希望它是可更新的,因为我在我的 SAM 模板的 userpool-client 部分中使属性可写:
WriteAttributes:
- email
- nickname
UserPoolId: !Ref MyCognitoUserPool
这也正确反映在控制台中:
我没有应用程序客户端密钥并且启用了所有身份验证流程。安全配置设置为已启用。
用户可以注册,所以我假设客户端中的Amplify配置没问题。
这里有什么问题?
我发现了问题。在创建用户池时,我必须在架构定义中设置 mutable
标志,如下所示:
Schema:
- Name: email
Mutable: true
...
- Name: nickname
Mutable: true
...
https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html
我正在尝试使用 AWS Amplify 从 AWS Cognito 用户池中更新用户的属性。
try {
const user = await Auth.currentAuthenticatedUser();
await Auth.updateUserAttributes(user, {
'nickname': 'newtestname'
});
} catch (error) {
console.log(error);
}
但我收到以下错误:
InvalidParameterException: user.nickname: Attribute cannot be updated.
我希望它是可更新的,因为我在我的 SAM 模板的 userpool-client 部分中使属性可写:
WriteAttributes:
- email
- nickname
UserPoolId: !Ref MyCognitoUserPool
这也正确反映在控制台中:
我没有应用程序客户端密钥并且启用了所有身份验证流程。安全配置设置为已启用。 用户可以注册,所以我假设客户端中的Amplify配置没问题。
这里有什么问题?
我发现了问题。在创建用户池时,我必须在架构定义中设置 mutable
标志,如下所示:
Schema:
- Name: email
Mutable: true
...
- Name: nickname
Mutable: true
...
https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html