这是我的网络应用程序的“用户设置”页面。我已将其简化到最低程度,以更好地突出问题。
为了验证我使用Auth0的用户,我想使用从属声明user_id
在MySQL数据库中标识用户以进行更新并检索用户的信息。不幸的user_id
是,这对于每个提供商都是不同的,例如,如果同一用户通过Auth0登录具有相同的电子邮件,则他得到一个,user_id
如果他通过google登录,则他得到另一个。
我考虑过使用电子邮件将登录的用户链接到他的信息。问题出在我的API中。更改之前,每次创建新的ID均为“ localhost:8080 / api / users /:id ”,在任何情况下都无法恢复单个用户的数据。现在,我已将“ id ”替换为“ email ”,我的API也已在“ localhost:8080 / api / users /:[email protected] ”中更改。
之前:
我想确保GET和PUT请求是基于登录用户的电子邮件发出的,而无需修改整个后端。
听起来好像您对用户进行身份验证的方式有问题。如果您有多种方法来验证用户身份,则这些方法需要与用户一对多关联。例如,每个用户都有一个auth-methods列表,并且每进行一次身份验证,您都要检查身份验证方法表并找到它映射到的一个用户。
我不确定您是自己执行此操作还是不确定所使用的框架是否正在处理该操作,但这听起来好像您需要更改模型以允许单个帐户使用多种Auth方法。
另外,您可以使用电子邮件,但这也是唯一标识用户的“旧”方法,如今几乎每个人都有多个活动的电子邮件帐户,因此您还应该与用户建立一对多的电子邮件联系。如果用户的Facebook和Google帐户拥有不同的电子邮件帐户,该怎么办?
在此处查看帐户链接:https : //auth0.com/docs/users/user-account-linking
信任外部提供商对电子邮件属于谁是真实的是危险的。如果我在其中一个提供商上使用他人的电子邮件开设了一个新帐户怎么办?然后,我可以在您的应用程序中登录该用户帐户,这是一个很大的安全风险。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句