我在我设计的应用程序中使用AWS cognito进行用户身份验证。在应用程序中需要进行用户审计的地方,我使用了来自cognito的id,就好像它是来自另一个表的外键一样(我使用的是关系数据库)。尽管这种方法是有效的,但却让人感觉不太合适。还有其他合适的设计方法吗?
在我的应用程序中,用户使用他的电子邮件地址登录(常见场景)。因此,通过构造,电子邮件地址在认知中和我的数据库中都是唯一标识符。
我的数据库为每个新用户创建一个用户id,这是我在应用程序中使用的主要标识符(注意,这个标识符与cognito无关)。
Cognito还为每个用户分配了一个id(它称之为"username"),但是我从来没有引用过这个id(我也从来没有觉得需要引用它)。我从事制作工作好几年了,从来没有后悔过这个决定。
不链接用户id的好处:
- 充分的灵活性(例如,我可以决定我想在我的数据库中为特定的认知用户创建一个新的用户对象)。我可以保留前一个用户,例如作为备份,即使它没有链接到cognito用户)。
- 更少的工作:我不需要确保我的系统中的id与那些在cognito一致。
不链接用户id的缺点:
- 也许它是更快的查询cognito使用用户名字段比电子邮件字段?也许这对某些用例来说是一个优势?