如何 link 记录用户到他们的数据,在 MySQL table 中检索和更新它们

How to link logged users to their data, retrieve and update them in MySQL table

这是我的网络应用 "User Settings" page。 我已将其简化为最低限度以更好地突出问题。

为了验证我使用 Auth0 的用户,我想使用子声明 user_id 来识别我的 MySQL 数据库中的用户以更新和检索用户信息。不幸的是,每个提供商的 user_id 是不同的,例如,如果具有相同电子邮件的同一用户通过 Auth0 登录,他会得到一个 user_id 如果他通过 google 他这样做得到另一个。

我考虑过使用电子邮件向 link 登录用户发送他的信息。 问题出在我的API。更改之前是“localhost:8080/api/users/:id” 每次它都会创建一个新的 ID,无论如何都不可能恢复单个用户的数据。现在我已经用“email”替换了“id”,我的API也在“localhost: 8080 / api / 用户 /: johnsmith@xxx.com”。
之前:

之后: 一句话,客户端的请求url也变了

我想确保 GET 和 PUT 请求是基于登录用户的电子邮件发出的,而不需要修改整个后端。

听起来您验证用户的方式有问题。如果您有多种方法来验证用户,那么这些方法需要与用户建立一对多的关系。例如,每个用户都有一个 auth-methods 列表,每当进行身份验证时,您都会检查 table 身份验证方法并找到它映射到的一个用户。

我不确定您是自己这样做还是您正在使用的框架正在处理它,但听起来您需要更改模型以允许单个帐户使用许多 Auth 方法。

您也可以使用电子邮件,但这也是一种唯一识别用户的“旧”方式,如今几乎每个人都有多个活动电子邮件帐户,因此您还应该有一个 one-to-many 关系供用户使用电子邮件。如果用户的 Facebook 和 Google 帐户有不同的电子邮件帐户怎么办?

在此处查看帐户链接:https://auth0.com/docs/users/user-account-linking

相信外部提供者对于电子邮件属于谁的真实性是危险的。如果我在其中一家提供商处使用其他人的电子邮件开立新帐户怎么办?然后我可以在您的应用程序中登录该用户帐户,这是一个相当大的安全风险。