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

时间:2017-09-08 19:56:50

标签: auth0

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

1 个答案:

答案 0 :(得分:3)

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

  • 命名空间用户标识
  • 帐户关联

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

关于帐户关联,如果您有两个单独的用户个人资料 - 每个都有自己的UserId。当您使用帐户链接时,其中一个将成为“主要”或“顶级”用户个人资料,而另一个个人资料将成为“次要”身份。您可以通过这种方式将多个用户配置文件作为单个用户配置文件链接在一起,但只有一个是主要用户配置文件。您可以始终如一地考虑链接,因此例如数据库连接仍然是主要的,或者您可以只创建最近创建的用户配置文件(与另一个配置文件共用的共享“电子邮件”)主要...在这种情况下, “第三级”用户配置文件将保留其原始userId,但如果您仅查询用户配置文件(并且还没有为该用户配置文件拖动标识数组),则对搜索的影响似乎是userId已更改。实际上,这是因为最初的“顶级”用户配置文件现在嵌套在另一个使用配置文件中。

最后,与您原来的问题略有正交 - 但在您声明if I wanted to base my Users database table on the Auth0 returned data的地方,希望您在此处并未提及使用Auth0用户配置文件userId作为关键数据库中的主键。您可以更好地创建代理键(没有业务意义/外部依赖的唯一键)作为主键,然后将Auth0 userId存储为每个元组的单独属性。

希望以上内容有道理,如果仍然不确定,请在下面发表评论。