【发布时间】:2018-02-17 19:24:06
【问题描述】:
从理论上讲,如果我想将我的 Users 数据库表基于 Auth0 返回的数据,并根据 Auth0 用户配置文件 ID 在我的 Users 表中维护一个唯一 ID,我是否会遇到 Auth0 用户 ID 已被删除的情况?改变了吗?如果是这样,用户id发生变化的情况是什么?
【问题讨论】:
标签: auth0
从理论上讲,如果我想将我的 Users 数据库表基于 Auth0 返回的数据,并根据 Auth0 用户配置文件 ID 在我的 Users 表中维护一个唯一 ID,我是否会遇到 Auth0 用户 ID 已被删除的情况?改变了吗?如果是这样,用户id发生变化的情况是什么?
【问题讨论】:
标签: auth0
这里的简单答案是 用户 ID 在 Auth0 中为给定用户配置文件创建后不会更改。但是,还有一些其他因素需要考虑,特别是:
Auth0 将在 userIds 前面放置一个连接类型前缀,以有效地 namespace 只是 Id 部分 - 这是通过管道完成的。例如,auth0|12345 或 auth0|MyCustomDB|12345 等。您需要确保使用整个 userId,而不仅仅是最后一个管道之后的数值。这样做的原因是为了确保 IdP/Datastores 中的 Id 之间没有冲突,其中 Auth0 是服务提供者,而不是身份提供者。
关于帐户链接,如果您有两个单独的用户配置文件 - 每个都有自己的 UserId。当您的帐户链接时,一个将成为有效的“主要”或“顶级”用户配置文件,而另一个配置文件将成为从属的“次要”身份。并且您可以通过这种方式将多个用户配置文件链接在一起作为单个用户配置文件,但只有一个是主要的。您可以始终使用帐户链接,例如,数据库连接仍然是主要的,或者您可以只将最近创建的用户配置文件(与另一个配置文件共用一个共享的“电子邮件”)作为主要的......在这种情况下, “三级”用户配置文件将保留其原始 userId,但如果您仅查询用户配置文件(而不是拖网该用户配置文件的身份数组),那么对搜索的影响似乎是 userId 已更改。实际上,这是因为最初的“顶级”用户配置文件现在嵌套在另一个用户配置文件中。
最后,与您的原始问题略有正交 - 但您在此处声明 if I wanted to base my Users database table on the Auth0 returned data,希望您在这里不是指使用 Auth0 用户配置文件 userId 作为关系数据库中的主键。您最好创建一个 代理键(没有业务意义/外部依赖的唯一键)作为主键,然后将 Auth0 userId 作为单独的属性存储在每个元组上。
希望以上内容有意义,如果仍然不确定,请在下方留下 cmets。
【讨论】: