132 Star 1.1K Fork 299

GVP符节开源 / jap

 / 详情

jap-social 不方便做已经登陆,绑定第三方登陆的场景

Done
member
Opened this issue  
2021-08-20 14:52

为了更高效率的处理 issue、解决问题,请按照如下格式填写 BUG 详情。

如果提交的 issue 不属于 BUG,可以忽略该问题模板。

提交前请确认:

  • 我在现有 issue 列表中搜索了相关信息。
  • 我已经在开发者文档中搜索了该信息:https://justauth.plus

当前环境

  • 使用的版本号(比如 1.0.4):
  • 出问题的模块(比如 jap-social):

问题描述

https://gitee.com/fujieid/jap/blob/master/jap-social/src/main/java/com/fujieid/jap/social/SocialStrategy.java#L122

SocialStrategy#authenticate 方法中判断了用户是否登陆的判断

预期的结果是什么?

讨论一下,加个方法和参数?

实际结果如何? 报错信息(请提交完整的截图或者日志)

一定要提供完整详细的异常堆栈。

重现问题的步骤

Comments (3)

如梦技术 created任务
如梦技术 set related repository to 符节开源/jap
yadong.zhang added
 
enhancement
label
yadong.zhang set branch to dev
yadong.zhang set milestone to v1.0.5
Expand operation logs

可以考虑加参过滤

jap-social 登录场景业务流程

  1. 用户发起登录的请求
  2. 判断用户是否已经登录,如果已经登录,直接进入第【9】步,否则进入第【3】步
  3. 根据 config 获取 AuthRequest
  4. 判断当前请求是否为第三方回调的请求,如果是第三方的回调请求,解析回调参数,跳到第【6】步进行登录,如果不是第三方的回调请求,进入第【5】步
  5. 创建授权连接,返回给前端进行跳转
  6. 使用第三方的回调参数 code 换取 token,token 换取 userInfo
  7. 判断当前第三方用户是否存在于数据库中,如果存在直接进入第【9】步,否则进入第【8】步
  8. 将第三方用户信息保存到数据库中
  9. 登录成功,返回当前登录用户的信息

jap-social 账号绑定场景业务流程

假设用户已经登录成功

  1. 用户发起绑定账号的请求,并缓存当前的 referer 地址( 可选,即发起绑定时的地址,绑定成功后可以跳回该地址
  2. 根据 config 获取 AuthRequest
  3. 判断当前请求是否为第三方回调的请求,如果是第三方的回调请求,解析回调参数,跳到第【5】步进行绑定,如果不是第三方的回调请求,进入第【4】步
  4. 创建授权连接(需要标记当前登录用户的唯一标识),返回给前端进行跳转
    • 4.1 可以将用户 ID 放到 state
    • 4.2 可以将用户 ID 和 state 进行对应缓存,键值为 state
    • 4.3 关于“绑定”用户时的 state 使用,请参考该篇文章的【问题三】
  5. 使用第三方的回调参数 code 换取 token,token 换取 userInfo,同时解析 state 获取待绑定的系统用户标识
  6. 判断当前第三方用户是否存在于数据库中,如果存在直接进入第【8】步,否则进入第【7】步
  7. 将第三方用户信息保存到数据库中
  8. 数据库中存在该 social userinfo,直接和 state 对应的 userID 建立绑定关系
  9. 绑定成功,判断缓存中是否存在 referer 地址,如果存在,控制程序跳转到 referer ,否则可以跳转到任意页面(业务方面决定)
yadong.zhang changed issue state from 待办的 to 已完成

Sign in to comment

Status
Assignees
Milestones
Pull Requests
Successfully merging a pull request will close this issue.
Branches
Planed to start   -   Planed to end
-
Top level
Priority
参与者(3)
784199 yadong.zhang 1578932767 372 dreamlu 1578913784
Java
1
https://gitee.com/fujieid/jap.git
git@gitee.com:fujieid/jap.git
fujieid
jap
jap

Search