Cognito 的 AWS 文档说:
Each custom attribute: Cannot be removed or changed once added to the user pool.
发件人:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes
我相信他们指的是自定义属性的名称,而不是值本身。
因此,例如可以从 Lambda 函数更改该值。假设我们在我们的电子商务网站中为每个用户存储保真度积分。
自定义属性是否适合存储此类信息?或者我应该创建一个链接到用户池中的 UserId 的新 DynamoDB 表?
最佳答案
您当然可以将此信息存储在 Cognito 自定义属性中。如果你要这样做,我会考虑两件事:
1) 确保用于对用户池进行身份验证的 Cognito 用户池客户端无权写入此属性。否则,流氓用户可以编写代码来根据用户池对自己进行身份验证,并根据需要为自己提供尽可能多的保真度。因此,您可能需要考虑将自定义属性更新隐藏在服务后面。
2) 根据您需要更新此属性的频率以及您的整体 Cognito 使用模式,您在使用 Cognito updateAttributes API 时可能会遇到 RequestLimitExceeded 错误。几乎每次我尝试使用 Cognito 作为用户信息的主要数据存储时,我都会受到限制。 AWS 支持会提高您的限制,但错误会在没有警告的情况下发生,这在生产环境中并不是很好。我最终总是默认使用 DynamoDB 表。当然这只是我的经验所以YMMV
关于amazon-web-services - Cognito 用户池中的自定义属性是否适合存储动态用户信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50601827/