mysql - 社交登录的数据库用户模型
问题描述
我想通过 Facebook 和 Google 实现社交登录。
我将它分为 3 个模型:用户、userProfiles 和 authenticationProviders..
userProfiles 和 authProviders 都 1:1 链接到用户。因为我想实现用户可以通过谷歌登录或者他可以通过提供电子邮件和密码手动创建帐户的选项
这是一个很好的做法还是有其他一些首选的方式来做到这一点?
这是我的模型
用户
CREATE TABLE users(
id SERIAL PRIMARY KEY NOT NULL,
name TEXT,
screenname TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
)
用户资料
CREATE TABLE userProfile(
email TEXT,
password TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
user_id INTEGER,
PRIMARY KEY (user_id),
FOREIGN KEY (user_id) REFERENCES users (id)
)
身份验证提供者
CREATE TYPE providerType AS ENUM ('google', 'facebook');
CREATE TABLE authenticationProviders (
providerKey varchar(128) NOT NULL,
providerType providerType,
created_at TIMESTAMP,
user_id INTEGER,
PRIMARY KEY (user_id),
FOREIGN KEY (user_id) REFERENCES users (id)
)
解决方案
推荐阅读
- r - R闪亮:滑块输入与小时,反应和绘图之间的链接
- amazon-web-services - 在无服务器框架上请求模板作为单独的文件?
- puppeteer - 为什么 puppeteer 截图页面两次然后页面重新加载
- spring-cloud - 使用 consul 的 Spring 云配置服务器“Discovery Fisrt”
- python - 更快/更懒惰的方式在 python 中将 m*n 均匀随机分成 n 组(每个组有 m 个元素)
- html - 如何设置悬停效果(注意:只有方形边框在悬停时应该像钻石形状一样旋转,而不是图像)
- python - Python - TCP 数据格式
- laravel - 发送邮件时如何从源代码中清除 Laravel 中的队列
- java - 我安排了一个任务,该任务下载文件并将其解压缩到资源文件夹中。它正常工作,但如果我将它作为 JAR 文件运行它会失败
- r - SF:从 UTM 到纬度/经度