oauth-2.0 如何管理本地身份验证和外部身份验证(OAuth)?

wgeznvg7  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(301)

在此验证新手。
我目前正在做一个项目,我必须实现身份验证。首先,我将做一个基本的本地身份验证,因为目标用户可能没有任何类型的社交网络,所以我将使用一个数据库和用户表,例如:id | email | password | fname | lname | age | status
在未来,我想添加某种社会身份验证使用Facebook,谷歌等...
我是否需要从一开始就计划用户表,因为稍后会有一些依赖关系?
我阅读了有关StackOverflow的文档,但我仍然不明白,对于社交认证,我是否需要在本地数据库中存储任何内容?

A - 1所有用户的用户表

从我所看到的,我应该能够检索某种数据,如电子邮件,名称等如果这个流是正确的:

  • 使用本地身份验证登录-〉发送JWT -〉结束
  • 使用社交网络登录-〉从社交网络获取信息-〉将用户添加到用户表(如果邮件不存在)-〉发送JWT -〉结束

但是,对于必需的密码字段会发生什么情况呢?

B - 1个表用于本地身份验证,1个表用于社交身份验证(甚至每个社交网络1个表)

我是否应该有一个用于社交身份验证的专用表并有某种联接?我会有这样的内容:
id | email | password | fname | lname | age | status
fb_id | email | fname | lname | age | status
google_id | email | fname | lname | age | status
id | fb_id | google_id(通过电子邮件加入)
但这似乎是错误的,因为我将有重复的数据和冲突的数据(不是相同的名称为例)
流量应与A相同。

C -以上都不是

还是我什么都不存?
多谢了!

dddzy1tm

dddzy1tm1#

你不需要为社交认证存储任何东西。你把认证工作交给了社交提供者。他们有认证用户所需的表和信息。
您从用户信息端点或ID令牌中获取的有关用户的信息通常仅用于会话,可能存储在cookie中。
如果您想让他们下次在本地登录,则需要一种方法来检索密码,如果您知道算法,甚至可以是哈希值,或者您在将帐户提供给“本地”数据库时让他们输入密码。
您可能有其他原因需要存储用户信息,但这不是必需的。

相关问题