Auth0 用户 ID 可以随时间变化吗?

Mic*_*eta 3 auth0

从理论上讲,如果我想将我的 Users 数据库表基于 Auth0 返回的数据并根据 Auth0 用户配置文件 ID 在我的 Users 表中维护一个唯一 ID,我是否会遇到 Auth0 用户 ID 已更改的情况?如果是这样,用户id更改的情况是什么?

arc*_*don 5

这里的简单答案是,在为 Auth0 中的给定用户配置文件创建后,用户 ID不会更改。但是,还有一些其他因素需要考虑,特别是:

  • 命名空间用户 ID
  • 帐号关联

Auth0 将在 userIds 前面放置一个连接类型前缀,以有效地命名Id 部分 - 这是通过管道完成的。例如,auth0|12345auth0|MyCustomDB|12345等。您需要确保使用整个 userId,而不仅仅是最后一个管道之后的数值。这样做的原因是为了确保 IdP/Datastore 中的 Id 之间没有冲突,其中 Auth0 是服务提供者,而不是身份提供者。

关于 账户关联, 如果您有两个单独的用户配置文件 - 每个配置文件都有自己的 UserId。当您进行帐户链接时,一个将成为有效的“主要”或“顶级”用户配置文件,而另一个配置文件则成为从属的“次要”身份。并且您可以通过这种方式将多个用户配置文件链接在一起作为单个用户配置文件,但只有一个是主要的。您可以始终保持帐户链接,例如,数据库连接仍然是主要的,或者您可以将最近创建的用户配置文件(与另一个配置文件共享的共享“电子邮件”)设为主要...在这种情况下, “三级”用户配置文件将保留其原始用户 ID,但如果您仅查询用户配置文件(并且不为该用户配置文件搜索身份数组),那么对搜索的影响似乎是 userId 发生了变化。实际上,这是因为最初是“顶级”用户配置文件,现在嵌套在另一个使用配置文件中。

最后,与您的原始问题略有正交 - 但在您陈述的地方if I wanted to base my Users database table on the Auth0 returned data,希望您在这里不是指使用 Auth0 用户配置文件 userId 作为关系数据库中的主键。您最好创建一个代理键(没有业务意义/外部依赖的唯一键)作为您的主键,然后将 Auth0 userId 作为单独的属性存储在每个元组上。

希望以上是有道理的,如果仍然不确定,请在下面留言。