繁体   English   中英

oauth2的数据库设计

[英]Database Design for oauth2

我有一个用户表,如下所示:

在此处输入图片说明

目前,我的电子邮件设置为“唯一”。 当用户尝试登录时,我检查电子邮件和密码,如果匹配,则发送令牌。 但是现在我想使用oauth提供程序(G +,Facebook,github等)启用登录。 为此,我决定使用Laravel的社交名流插件。 在文档中,它说:

Retrieving User Details

Once you have a user instance, you can grab a few more details about the user:

$user = Socialite::driver('github')->user();

// OAuth Two Providers
$token = $user->token;

// OAuth One Providers
$token = $user->token;
$tokenSecret = $user->tokenSecret;

// All Providers
$user->getId();
$user->getNickname();
$user->getName();
$user->getEmail();
$user->getAvatar();

我的问题是,一旦oauth成功,我如何将详细信息保存在数据库中。 我应该在表格中进行哪些更改。

您也许可以检查此存储库:

https://github.com/lucadegasperi/oauth2-server-laravel

如果您不想使用该软件包,则只​​需签出数据库迁移文件和控制器,以查看如何处理登录和注册。

如果您不打算代表用户发出任何请求,则实际上甚至不需要保存OAuth访问令牌-您可以在通过社交身份验证后简单地登录用户。 典型流程:

  1. 查看用户是否已经存在,例如。 $ user = User :: whereEmail($ user-> getEmail());

  2. 如果用户不存在,请使用User :: create([])创建一个用户,并从社交网络中获取尽可能多的数据。 如果用户存在,则可能要使用社交网络中的值更新其头像/名称。

  3. 使用Auth :: login($ user)登录用户;

但是,如果您确实打算代表用户做一些额外的请求,则需要将访问令牌存储在某个地方(例如,在单独的数据库表中)。 大多数社交网络会要求您保存一个长字符串-访问令牌,而Twitter需要两个-访问令牌和密码。 因此,您的表至少将包含:users表中的用户ID,社交提供者ID和访问令牌。

如果您保存访问令牌,则可以代表用户发出API请求-检查他们的时间表,发布等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM