Cognito用户池中的自定义属性是存储动态用户信息的适当位置吗?

时间:2018-05-30 10:02:03

标签: amazon-web-services aws-cognito serverless cognito

Cognito的AWS文档说:

  

每个自定义属性:添加到之后无法删除或更改   用户池。

来自:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-custom-attributes

我认为他们指的是自定义属性的名称,没有值本身。

因此,例如,可以从Lambda函数更改该值。假设我们正在为我们的电子商务网站中的每个用户存储保真度点。

自定义属性是存储此类信息的适当位置吗?或者我应该创建一个链接到用户池中的UserId的新DynamoDB表吗?

1 个答案:

答案 0 :(得分:1)

您当然可以将此信息存储在Cognito自定义属性中。如果你这样做,我会考虑两件事:

1)确保用于对用户池进行身份验证的Cognito用户池客户端没有写入此属性的权限。否则,流氓用户可以编写代码来对用户池进行身份验证,并为自己提供尽可能多的保真度点。因此,您可能需要考虑将自定义属性更新隐藏在服务后面。

2)根据您需要更新此属性的频率以及整体Cognito使用模式,使用Cognito updateAttributes API时可能会遇到RequestLimitExceeded错误。几乎每次我尝试使用Cognito作为用户信息的主要数据存储时,我都受到了限制。 AWS支持将提升您的限制,但错误会在没有警告的情况下发生,这在生产环境中并不是很好。我总是最终只是默认为DynamoDB表。当然这只是我的经历所以YMMV