Cognito的AWS文档说:
每个自定义属性:添加到之后无法删除或更改 用户池。
我认为他们指的是自定义属性的名称,没有值本身。
因此,例如,可以从Lambda函数更改该值。假设我们正在为我们的电子商务网站中的每个用户存储保真度点。
自定义属性是存储此类信息的适当位置吗?或者我应该创建一个链接到用户池中的UserId的新DynamoDB表吗?
答案 0 :(得分:1)
您当然可以将此信息存储在Cognito自定义属性中。如果你这样做,我会考虑两件事:
1)确保用于对用户池进行身份验证的Cognito用户池客户端没有写入此属性的权限。否则,流氓用户可以编写代码来对用户池进行身份验证,并为自己提供尽可能多的保真度点。因此,您可能需要考虑将自定义属性更新隐藏在服务后面。
2)根据您需要更新此属性的频率以及整体Cognito使用模式,使用Cognito updateAttributes API时可能会遇到RequestLimitExceeded错误。几乎每次我尝试使用Cognito作为用户信息的主要数据存储时,我都受到了限制。 AWS支持将提升您的限制,但错误会在没有警告的情况下发生,这在生产环境中并不是很好。我总是最终只是默认为DynamoDB表。当然这只是我的经历所以YMMV