在 Cognito 或 AppSync 中存储用户属性?
Store user attributes in Cognito or AppSync?
我正在使用 AWS Amplify,我想知道最好是将用户属性存储为自定义 Cognito 属性还是存储在用户 table 中以用于 AppSync?
认知方法:
'username': 'jdoe',
'password': 'mysecurepassword#123',
'attributes': {
'email': 'me@domain.com',
'phone_number': '+12135555555',
'custom:favorite_flavor': 'Cookie Dough' // custom attribute, not standard
}
- 优点:单一事实来源
- 缺点: 不是 API
的一部分
AppSync 方法:
type User
@model
@auth(
rules: [
{allow: owner, ownerField: "owner", operations: [create, update, delete, read]},
])
{
id: ID!
owner: String
favoriteFlavor: String
}
- 优点: API
的所有功能
- 缺点:每个人有两个 "users"(一个 Cognito 用户和一个 table 用户)
如果 AppSync 方法最好,其他字段是否应该转移到 table(如姓名或电子邮件)?
谢谢!
根据我的经验,两者都用最好。
- 与身份验证相关的字段(电子邮件、用户名、phone、...),将其保存在 Cognito 和数据库中。 1 Cognito 自定义属性 "custom:id" 映射到数据库中的用户 "id"。
- 其他属性,保存到DB中更灵活。因为无法搜索到 Cognito 自定义属性,并且 Cognito API 限制(每秒请求数)不适合经常使用:https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html,所以从数据库中保存和获取更好。
- 当用户更新相关认证字段时,您必须在 Cognito 和 DB 上更新。
希望对您有所帮助。
我正在使用 AWS Amplify,我想知道最好是将用户属性存储为自定义 Cognito 属性还是存储在用户 table 中以用于 AppSync?
认知方法:
'username': 'jdoe',
'password': 'mysecurepassword#123',
'attributes': {
'email': 'me@domain.com',
'phone_number': '+12135555555',
'custom:favorite_flavor': 'Cookie Dough' // custom attribute, not standard
}
- 优点:单一事实来源
- 缺点: 不是 API 的一部分
AppSync 方法:
type User
@model
@auth(
rules: [
{allow: owner, ownerField: "owner", operations: [create, update, delete, read]},
])
{
id: ID!
owner: String
favoriteFlavor: String
}
- 优点: API 的所有功能
- 缺点:每个人有两个 "users"(一个 Cognito 用户和一个 table 用户)
如果 AppSync 方法最好,其他字段是否应该转移到 table(如姓名或电子邮件)?
谢谢!
根据我的经验,两者都用最好。
- 与身份验证相关的字段(电子邮件、用户名、phone、...),将其保存在 Cognito 和数据库中。 1 Cognito 自定义属性 "custom:id" 映射到数据库中的用户 "id"。
- 其他属性,保存到DB中更灵活。因为无法搜索到 Cognito 自定义属性,并且 Cognito API 限制(每秒请求数)不适合经常使用:https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html,所以从数据库中保存和获取更好。
- 当用户更新相关认证字段时,您必须在 Cognito 和 DB 上更新。
希望对您有所帮助。