首页 > 解决方案 > 在旨在使用外部身份验证的系统中维护用户审计的正确方法是什么?

问题描述

我在我设计的应用程序中使用 AWS cognito 进行用户身份验证。在应用程序中需要用户审计的地方,我使用了 cognito 中的 id,就好像它是另一个表中的外键一样(我使用的是关系数据库)。尽管这可行,但这种方法在某种程度上感觉不合适。有没有其他合适的方法来设计这个?

标签: databasedatabase-designamazon-cognito

解决方案


在我的应用程序中,用户使用他的电子邮件地址登录(常见场景)。因此,通过构造,电子邮件地址在 cognito 和我的数据库中都是唯一标识符。

我的数据库为每个新用户创建一个用户 ID,这是我在应用程序中使用的主要标识符(请注意,此标识符与 cognito 无关)。

Cognito 还为每个用户分配一个 id(它称为“用户名”),但我从不引用该 id(我也从未觉得需要引用它)。我已经从事生产好几年了,我从不后悔这个决定。

不链接用户 ID 的好处:

  • 完全的灵活性(例如,我可以决定我想在我的数据库中为特定的认知用户创建一个新的用户对象。我可以保留以前的用户,例如作为备份,即使它没有链接到认知用户)。
  • 更少的工作:我不需要确保我系统中的 id 与 cognito 中的一致。

不链接用户 ID 的缺点:

  • 也许使用用户名字段查询 cognito 比使用电子邮件字段更快?也许这对于某些用例可能是一个优势?

推荐阅读