UUID为用户唯一ID?



每当我们创建一个身份验证系统时,它总是自动创建一个唯一的ID,就像每个用户的UUID一样。在我的认证系统(亚马逊-cognito),它是要求注册用户的用户名和电子邮件&用户名应该是唯一且不可变的。但是我希望用户可以稍后更改用户名,这就是为什么我添加了通过首选用户名登录,用户可以在电子邮件验证后添加首选用户名并可以更改它。注册期间的用户名是无用的,因为它在注册后为每个用户单独创建一个子(唯一ID)。在注册用户名的地方,我使用UUID。

  1. 注册需要一个唯一的用户名(不可变)&电子邮件。
  2. 在电子邮件确认后,用户将选择其首选用户名。首选用户名也是唯一的,但用户可以更改它以后,可以使用它登录。
  3. 用户创建后,amazoncognito为每个用户创建一个唯一的ID。
  4. 现在用户可以通过用户名(注册时给出)登录,首选用户名&电子邮件。
  5. 但我不想在注册时从用户那里获取用户名因为以后用户不能更新用户名技术上来说,用户应该有一个用户名应该是可变的首选用户名
  6. 这就是为什么我在注册用户期间使用UUID的地方用户名。这个主意好吗?

我想是的是你问题的答案。

在我的项目中我都是自己做的。

我说你为什么!

通常自动递增的id工作得很好。在一些情况下,UUID可能会变得很方便。尽管优秀的门户网站已经广泛使用UUID标识符作为主ID系统(https://trello.com, https://slack.com),但许多新的初创企业和开发仍然基于自动递增的主键作为ID。

  • 一个与安全相关。UUID比简单的数字更难记住。因此,路过的人,瞥一眼你的屏幕,将无法知道你正在处理什么文件号。如果你不知道你要找的是什么,也不知道要去哪里找,那么黑进一个系统来检索信息要困难得多。

  • 另一个是关于数据库扩展的。假设你一直在两个自托管博客平台上写博客文章。出于某种原因,你想把这两个博客合并成一个。如果使用通常的自动递增id,则必须重新索引数据库的每个博客文章,并更新可能指向它们的每个外键。但是如果您使用UUID作为主键…就不用做任何工作了!

  • 如果您使用自动增量ID,坏人可能会创建一个帐户在您的系统中,创建一个公司,检查网络选项卡在Chrome浏览器和看到他的ID是136。他现在知道您的系统中只有135家由其他客户创建的公司。你可能会说"没什么大不了的"。但是你100%确定实体总数信息不敏感吗?

  • 当您使用uuid时,您不能说之前创建了多少条记录。此外,您可以在秘密(例如共享)链接中使用uidv4。即使你有数百万个秘密链接,黑客也需要永远才能猜到。

使用UUID作为主键确实还有其他一些好处;上网看看。

归根结底,这是你的项目,你应该决定哪种策略最适合你的项目。

最新更新