JustAuth JustAuth
首页
开始使用🔥
  • 使用State
  • 自定义state缓存
  • 自定义第三方平台的OAuth
  • 自定义Scope
  • JustAuth与现有用户系统整合
  • 异常问题
  • 功能问题
  • 数据看板🔥
  • 贡献指南
  • 行为准则
  • 用户权益
  • 贡献者们
  • 社区配套 (opens new window)
  • 项目荣誉🔥
  • 精选文章
社区活动
  • 关于
  • 友情链接
  • 其他开源
  • 更新记录
收藏
GitHub (opens new window)

JustAuth

开箱即用的整合第三方登录的开源组件
首页
开始使用🔥
  • 使用State
  • 自定义state缓存
  • 自定义第三方平台的OAuth
  • 自定义Scope
  • JustAuth与现有用户系统整合
  • 异常问题
  • 功能问题
  • 数据看板🔥
  • 贡献指南
  • 行为准则
  • 用户权益
  • 贡献者们
  • 社区配套 (opens new window)
  • 项目荣誉🔥
  • 精选文章
社区活动
  • 关于
  • 友情链接
  • 其他开源
  • 更新记录
收藏
GitHub (opens new window)
  • 使用State
  • 自定义state缓存
  • 自定义第三方平台的OAuth
  • 自定义Scope
  • JustAuth与现有用户系统整合
    • 发现问题
    • JustAuth与用户系统整合流程图
    • 数据库表结构(参考)
      • 用户表(user)
      • 社会化用户表(social_user)
      • 社会化用户 & 系统用户关系表(socialuserauth)
  • 高级特性
JustAuth
2021-10-06

JustAuth与现有用户系统整合

# 发现问题

之前在群里经常会看到小伙伴有以下几点疑问:

  • JustAuth如何与现有用户系统整合?
  • JustAuth如何实现用户绑定?

我就此需求,整理了一份JustAuth与现有用户系统整合逻辑图

# JustAuth与用户系统整合流程图

在线版: JustAuth与现有用户系统整合 (opens new window)

JustAuth与现有用户系统整合

# 数据库表结构(参考)

以下为 第三方登录 + 本地用户系统 的数据库表结构(仅供参考)

# 用户表(user)

字段 类型 释义 NULL 备注
id int 主键 false
username varchar 用户名 false
password varchar 密码 true 选择使用第三方用户登录时不存在密码,除非进行了用户绑定
nickname varchar 昵称 true
gender varchar 性别 true
avatar varchar 头像 true
blog varchar 个人地址 true
company varchar 公司名 true
location varchar 地址 true
email varchar 邮箱 true

# 社会化用户表(social_user)

字段 类型 释义 NULL 备注
id int 主键 false
uuid varchar 第三方系统的唯一ID false 详细解释请参考:名词解释
source varchar 第三方用户来源 false GITHUB、GITEE、QQ,更多请参考:AuthDefaultSource.java (opens new window)
access_token varchar 用户的授权令牌 false
expire_in int 第三方用户的授权令牌的有效期 true 部分平台可能没有
refresh_token varchar 刷新令牌 true 部分平台可能没有
open_id varchar 第三方用户的 open id true 部分平台可能没有
uid varchar 第三方用户的 ID true 部分平台可能没有
access_code varchar 个别平台的授权信息 true 部分平台可能没有
union_id varchar 第三方用户的 union id true 部分平台可能没有
scope varchar 第三方用户授予的权限 true 部分平台可能没有
token_type varchar 个别平台的授权信息 true 部分平台可能没有
id_token varchar id token true 部分平台可能没有
mac_algorithm varchar 小米平台用户的附带属性 true 部分平台可能没有
mac_key varchar 小米平台用户的附带属性 true 部分平台可能没有
code varchar 用户的授权code true 部分平台可能没有
oauth_token varchar Twitter平台用户的附带属性 true 部分平台可能没有
oauth_token_secret varchar Twitter平台用户的附带属性 true 部分平台可能没有

# 社会化用户 & 系统用户关系表(social_user_auth)

字段 类型 释义 NULL 备注
id int 主键 false
user_id varchar 系统用户ID false
social_user_id varchar 社会化用户ID false 数据库主键(非第三方用户的ID)

注意

  1. 建议通过uuid + source的方式唯一确定一个用户,这样可以解决用户身份归属的问题。因为 单个用户ID 在某一平台中是唯一的,但不能保证在所有平台中都是唯一的。
  2. 相关 SQL 操作的伪代码
    1. 获取第三方平台 GITHUB 用户(UUID = xxxxxxx)的 SQL 语句伪代码:
      SELECT
          su.* 
      FROM
          `social_user` su 
      WHERE
          su.uuid = 'xxxxxxx' 
          AND su.source = 'GITHUB'
      
      1
      2
      3
      4
      5
      6
      7
    2. 查询系统用户(ID = 1)是否绑定了 GITHUB 平台账号的 SQL 语句伪代码:
      SELECT
          count(1)
      FROM
          `social_user_auth` sua
      INNER JOIN `social_user` su ON sua.social_user_id = su.id
      WHERE
          sua.user_id = '1' 
          AND su.source = 'GITHUB'
      
      1
      2
      3
      4
      5
      6
      7
      8
    3. 解绑 GITHUB 平台的绑定账号
      DELETE FROM `social_user_auth` sua WHERE sua.social_user_id = '1' AND sua.user_id = '1'
      
      1
编辑 (opens new window)
Last Updated: 2021/10/06, 18:03:43
自定义Scope

← 自定义Scope

最近更新
01
AppleID登录
09-13
02
关于
09-13
03
企业微信二维码登录(新)
08-04
更多文章>
Theme by Vdoing | Copyright © 2021-2024

友情链接:UniAdmin | 江如意的博客

Written by Yadong.Zhang | 鲁ICP备17054970号-3 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式