首页 > 其他分享 >扫码登录

扫码登录

时间:2023-01-27 22:46:15浏览次数:44  
标签:扫码 登录 前端 token SessionA 授权

扫码登录的实现思路很多,这里整理笔者用过的解决方法

一、已存在认证服务器,服务在外部进行集成

外部服务根据前端传输的HttpHeaders里的客户端ID(clientId)判断是否是扫码登录。

1、 长链接(WebSocket)实现

  • 扫码登录时(onOpen阶段),前端和服务后端建立长链接会话,通过SessionId标识并在静态的ConcurrentHashMap中保存此会话为会话A(SessionA),同时在Redis中保存此Id并设置过期时间,返回成功信息:
{
  code: 200,
  msg: "成功",
  info: "<认证服务器地址及授权页面>?code=<SessionA的会话ID>
}

,前端接收到成功信息后将info的内容形成二维码;

  • 认证软件扫码后,在授权页面触发认证授权,授权通过后,在授权页面和服务后端建立长链接会话,连接成功后,前端在会话B中发送SessionA的Id和授权成功的token到后端(onMessage阶段),后端拿到token请求认证服务器验证;
  • 验证成功后,服务后端生成服务端token,并且根据SessionIdConcurrentHashMap中取得SessionA,在SessionA中把token传给前端保存(onMessage阶段)

注:后端在WebSocket的onClose阶段去除Redis中的Id定时标注和SessionA。

标签:扫码,登录,前端,token,SessionA,授权
From: https://www.cnblogs.com/MiddleByPass/p/17069347.html

相关文章