首页 > 解决方案 > 社交登录的数据库用户模型

问题描述

我想通过 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)
  )

标签: mysqldatabasepostgresqldatabase-designdatabase-connection

解决方案


推荐阅读