Google 登录,数据库端

2023-12-21

我读过有关使用 Google 处理登录的信息这个网站 https://developers.google.com/accounts/docs/OAuth2Login,但它并没有很好地解释数据库应该发生什么。

通常,对于数据库中的用户帐户,您会有类似的字段id, username, password等等。从我在链接中读到的内容来看,您最终将获得用户的 ID 令牌,里面有一个名为“sub“其中包含可用于识别用户的值。

我的问题是,这个“sub“存储在数据库中? 它会进入id field? Username field?

我认为它不应该进入username字段,因为有人可能创建与某人的 Google 完全相同的用户名subID。但把它放在里面似乎也很奇怪id field.

另外,是否需要另一个字段user accounts为了区分本地登录的用户和通过 Google 登录的用户,该表是一个布尔值吗?


创建 EXTERNAL_ID 列,并使用它来存储来自外部系统的标识符。您应该添加 EXTERNAL_TYPE 列并将其设置为“GOOGLE”。当您要集成更多身份验证提供程序时,可以将其设置为不同的值(例如“OPEN_ID”、“FACEBOOK”。)

与外部系统交互时,始终需要存储外键/标识符,以便可靠地访问和更新外部记录。

外部键与本地数据库中的 ID 不同,并且它绝对不是用户名..它只是它自己的列,并且应该具有相当大的大小,以便可以存储遇到的任何外部 ID。

VARCHAR(64) 可能是一个好的开始,因为根据定义,我们不对标识符的类型或内容负责——这些是由外部系统提供和定义的。我们只需要保持它的值不变,以便在与外部系统通信时使用。

EXTERNAL_TYPE 字段可让您区分“本地注册”用户和“通过 Google 或其他外部提供商注册”的用户。

例如:

create table "USER" (
    ID            int not null,
    USERNAME      varchar(64),
    DISPLAY_NAME  varchar(64),
    EMAIL         varchar(128),

    PWD_HASH      varchar(32),   -- "native" password, salted & hashed for security
    PWD_SALT      varchar(32),

    EXTERNAL_TYPE varchar(16),   -- external-auth Type & ID.
    EXTERNAL_ID   varchar(64),

    primary key (ID)
);

请注意,某些网站使用稍微更高级的方案,其中用户既可以通过 Google 注册,又可以通过本机密码登录。在这种情况下,通过一个凭据系统登录会检测现有的电子邮件和其他凭据系统 - 通常这会提示用户使用其他凭据进行身份验证,链接它们并使用两者。这仍然基于 EXTERNAL_ID 和 EXTERNAL_TYPE,但可能将它们放在与 USER 相关的 USER_CREDENTIALS 表上,而不是 USER 表本身。

对于用户身份验证,您也可能需要额外的列来存储某种加密/密钥/令牌。不确定,只是有可能。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 登录,数据库端 的相关文章

  • 删除连接到另一表 SQL 的一个表中的记录

    我有两个表 一个包含 212 000 条记录 已弃用的记录 另一个包含 10 500 000 条记录 我想在 id 和 version number 字段上连接两个表 因为两个表都有这些字段 我希望从连接表中删除匹配的记录 来自连接表 即从
  • SQL 错误:“没有这样的表”

    我试图解决为什么我的代码为所有查询返回 null 的原因 最后发现 sql 查询什么也没有返回 我使用简约代码创建了一个新的 AIR 文档 s WindowedApplication
  • 在 MySQL 中对整数字段运行带引号的数字(字符串)查询时会发生哪些复杂情况

    在 SQL 中 不应引用整数 因为如果引用 它将是一个字符串 但我很好奇如果我这样做会出现什么问题 并发症 例如 SELECT FROM table WHERE id 1 正确的 vs SELECT FROM table WHERE id
  • PL/pgSQL SELECT 到数组中

    这是我的函数声明和主体的一部分 CREATE OR REPLACE FUNCTION access update RETURNS void AS DECLARE team ids bigint BEGIN SELECT INTO team
  • 插入 Hive 表 - 非分区表到具有多个分区的分区表 - 无法插入目标表,因为列号/类型

    当我尝试插入分区表时 出现以下错误 SemanticException 错误 10044 第 1 23 行无法插入目标表 因为列号 类型不同 表 insclause 0 有 6 列 这 3 列已分区 我们不需要任何必须从中转储 存储的过滤器
  • SQL:如何在按部分分组的查询中使用子查询?

    如何在按部分分组的查询中使用子查询 我使用 SQL Server 2008 R2 和 Delphi 2010 我收到此错误 Cannot perform an aggregate function on an expression cont
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • sql查询获取从一月到当月的所有数据,即使没有记录

    我不擅长 sql 所以任何帮助世界都很棒 我有一个 SQL 查询 可以获取从一月到当月注册的记录 我的代码示例 SELECT DatePart YEAR p createStamp as TheYear DatePart MONTH p c
  • 如何通过子 POJO 的属性过滤复合 ManyToMany POJO?

    我有两个像这样的房间实体 Entity public class Teacher implements Serializable PrimaryKey autoGenerate true public int id ColumnInfo n
  • MySQL中如何声明变量?

    如何在mysql中声明一个变量 以便我的第二个查询可以使用它 我想写一些类似的东西 SET start 1 SET finish 10 SELECT FROM places WHERE place BETWEEN start AND fin
  • 在存储过程中验证用户的最简单方法?

    我需要一个存储过程 可以通过发送以下内容来检查登录尝试时他们是否是有效用户login and password查看它们在数据库中是否匹配 有没有一种简单的方法可以做到这一点 如果没有更多信息 我目前能提供的最好信息是 CREATE STOR
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • 数字表与递归 CTE 生成一系列数字

    为什么使用数字表比使用递归 CTE 动态生成它们要快得多 在我的机器上 给定一张桌子numbers单列n 主键 包含从1到100000的数字 查询如下 select n from numbers 大约需要 400 毫秒才能完成 使用递归 C
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • SQL 约束以防止根据列的先前值更新列

    是否可以使用检查约束 或其他一些技术 来防止在更新记录时设置与其先前值相矛盾的值 一个例子是 NULL 时间戳 表明发生了某些事情 例如 file exported 一旦文件被导出并且具有非 NULL 值 就不应再将其设置为 NULL 另一
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • 使用加权行概率从 PostgreSQL 表中选择随机行

    输入示例 SELECT FROM test id percent 1 50 2 35 3 15 3 rows 你会如何编写这样的查询 平均 50 的时间我可以获得 id 1 的行 35 的时间 id 2 的行 15 的时间 id 3 的行
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么

随机推荐

  • 将多行合并为一行,多对多

    使用 SQL Server 我有以下表格 数据 CUS 访问 Cus ID Cus Vis ID 1 01 1 02 2 01 and CUS EVENT Cus Event ID Cus ID Cus Vis ID 001 1 01 00
  • 将巨大的 40000 页 pdf 拆分为单页,itextsharp,内存不足异常

    我收到了包含大量数据的巨大 PDF 文件 目前的 PDF 大小为 350 MB 大约有 40000 页 当然 如果能得到更小的 PDF 就好了 但这就是我现在必须处理的 我可以在 acrobat reader 中打开它 加载时会有一些延迟
  • jQuery 和伪元素

    我尝试动态更改 CSS 中定义的元素的位置 after 使用这个 function div after css top 20px 但这不起作用 有什么方法可以改变位置吗 你不能 内容创建者 after or before不是 DOM 的一部
  • 如何使用 docker-compose 而不是使用 docker 桥从 docker 容器连接到 localhost:9092

    我正在我的上运行 Kafka 服务器本地机器在端口 9092 上 我正在运行一项服务使用 docker compose 的 docker 容器需要向kafka服务器发送消息 我尝试使用 localhost 和 IP 在服务代码中编写我的生产
  • 如何生成表示 rrule 对象的人类可读字符串?

    我的应用程序允许用户定义对象的调度 并将它们存储为 rrule 我需要列出这些对象并显示类似 每日下午 4 30 的内容 有什么可用的东西可以 漂亮地格式化 rrule 实例吗 您只需提供一个 str 方法 每当需要将对象呈现为字符串时就会
  • SQLite 返回日期超过一周的记录

    我正在为图书库制作一个程序 在 sqlite 数据库中有一个图书表 其中包括该书上次取出的日期 我需要一个查询来显示过期的书籍 到目前为止我的代码如下 def findOverdueBooks event findRecords c exe
  • NuxtJS分布式静态页面生成

    有没有办法将静态页面生成过程拆分到多台机器上 我目前正在使用 NuxtJS 静态生成约 150k 页面 生成这些页面需要相当长的时间 约 1 小时 如果您已经在使用有效负载密钥 https nuxtjs org docs configura
  • 如何读取PHP中的注释块?

    我正在做一些自制的自动化文档 因为我有一个布局不是很标准的代码库 我想知道最好的方法是读取 PHP 文件并获取注释块的内容 我能想到的唯一方法是打开文件并逐行读取它 但我认为也许有一些内置的魔法可以为我解析文档 类似于反射函数 每个文件的基
  • Android:使用 1 个活动的主/详细流程(双窗格)

    据报道安卓指南 http developer android com guide practices tablets and handsets html 双面板可以通过两种方式实现 多个片段 one活动 多个片段 multiple活动 我正
  • 在 Visual Studio 2015 中使用 v90 (VS2008) 平台工具集

    是否可以 以及如何 使用 VS2015 IDE 使用编译器 链接器 STL 以及 VS2008 附带的所有其他内容来构建本机 C 项目 我想做的事情叫做 C 本机多目标 众所周知 例如VS2012 允许对 C 项目使用 VS2008 v90
  • 使用nodeValue从domelement打印html内容

    我有 html 格式的图像 我将其解析为 DOMDocument 并开始使用它 doc new DOMDocument doc gt loadHTML article header imgs doc gt getElementsByTagN
  • 如何制作Photoshop描边效果?

    我正在寻找一种以编程方式重新创建以下效果的方法 给出输入图像 输入http www shiny co il shooshx ConeCarv q input png http www shiny co il shooshx ConeCarv
  • asp net core app出现MSB3277怎么办

    我正在使用引用 EntityFrameworkCore 2 1 3 包的数据库项目 但 AspNetCore App metapackage 包含 EntityFrameworkCore 2 1 2 引入我的数据库项目后 我收到此 msbu
  • 如何使用 Networkx 包显示更好分离的网络?

    我使用创建了一个图形对象pytextrank像这样的包 import pytextrank Some steps and calculations graph ranks pytextrank text rank path stage1 我
  • 如何测试存储库中标记为@Modifying的方法?

    例如我有 public interface CrudUserRepository extends JpaRepository
  • 使用 Active Directory 集成身份验证向 Azure Sql 数据库添加具有特定权限的新用户

    我有一个带有两个数据库的 Azure SQL Server 我尝试对其使用 Azure Active Directory 集成身份验证 其中一个数据库至关重要 大多数用户只需要被授予对此数据库的 读 访问权限 要添加具有 读者角色 的新用户
  • WCF 客户端错误:“未指定安全令牌颁发者的地址”

    我从 WCF 客户端收到以下错误 未指定安全令牌颁发者的地址 必须在目标 http site com TLAPI svc 的绑定中指定显式颁发者地址 或者必须在凭据中配置本地颁发者地址 我正在尝试连接到 SharePoint 服务应用程序
  • std::string::find 在 C++ 中未按预期工作

    我试图验证输入字符串中是否存在特定字符串 如果是 则根据找到的字符串执行某些操作 但似乎无论如何它总是在做第一个任务 if inputString find str1 gt 0 do something else if inputStrin
  • g++ 实现如何处理这种情况?

    这是一个后续问题this one https stackoverflow com questions 10002082 typecasting with virtual functions 考虑这个例子 include
  • Google 登录,数据库端

    我读过有关使用 Google 处理登录的信息这个网站 https developers google com accounts docs OAuth2Login 但它并没有很好地解释数据库应该发生什么 通常 对于数据库中的用户帐户 您会有类