手机扫码登录如何实现

1、手机端如何完成认证

二维码如何生成并且包含哪些信息

在PC端进行登录操作时,选择二维码扫码登录后,PC端向服务端发起请求,告诉服务端,我要生成用户登录的二维码,并且把PC端设备信息也传递给服务端
服务端收到请求后,它生成二维码ID,并将二维码ID与PC端设备信息进行绑定
然后把二维码ID返回给PC端
PC端收到二维码ID后,结合二维码ID等生成二维码

手机端(移动端)如何认证

手机端一般是不会存储登录密码的,在日常使用过程中,我们应该会注意到,只有装载APP,第一次登录的时候,才需要进行基于账号密码的登录,之后即使杀掉这个应用进程,甚至手机重启,都是不需要再次输入账号密码的,它可以自动登录。
这背后有一套基于token的认证机制,和PC有些类似,但又有一些不同。

  • APP登录认证的时候除了账号密码,还有设备信息
  • 账号密码校验通过,服务端会把账号与设备进行一个绑定,进行持久化的保存,会存在一个数据结构中,包含了账号ID,设备ID,设备类型等等
    然后服务端会生成一个token,用它来映射数据结构,这个token其实就是一串有着特殊意义的字符串,它的意义就在于,通过它可以找到对应的账号与设备信息,
  • 手机端得到这个token后,需要进行一个本地保存,每次请求服务端都携带上token与设备信息。
  • 服务端就可以通过token找到与它绑定的账号与设备信息,然后把绑定的设备信息与客户端每次传来的设备信息进行比较, 如果相同,那么校验通过,返回API接口响应数据, 如果不同,那就是校验不通过拒绝访问

2、PC端如何完成登录

手机端完成了它的工作,我们服务端的登录怎么进入登录状态呢?

PC端是通过token来标识登录状态的。那么手机端扫码确认之后,我们的服务端就应该给PC生成相应的token。那么,这个PC端又如何获取它所需的token key,来完成登录呢?

PC端可以通过获取二维码的状态来进行相应的响应:

二维码有三种状态:

  • 二维码未扫描:无操作
  • 二维码已失效:提示刷新二维码
  • 二维码已成功:从服务端获取PC token

那么客户端是如何获取二维码状态的呢?
轮询:
轮询方式是指客户端会每隔一段时间就主动给服务端发送一次二维码状态的查询请求。
在这里插入图片描述
长轮询
长轮询是指客户端主动给服务端发送二维码状态的查询请求,服务端会按情况对请求进行阻塞,直至二维码信息更新或超时。当客户端接收到返回结果后,若二维码仍未被扫描,则会继续发送查询请求,直至状态变化(已失效或已成功)。

在这里插入图片描述
websocket
Websocket是指前端在生成二维码后,会与后端建立连接,一旦后端发现二维码状态变化,可直接通过建立的连接主动推送信息给前端。

  1. PC端请求服务端获取二维码ID
  2. 服务端生成相应的二维码ID,设置二维码的过期时间,状态等。
  3. PC端获取服务端返回的二维码ID,生成相应的二维码。
  4. 手机端扫描二维码,获取二维码ID。
  5. 手机端将手机端token和二维码ID发送给服务端,确认登录。
  6. 服务端校验手机端token,根据手机端token和二维码ID生成PC端token
  7. PC端通过轮询方式请求服务端,通过二维码ID获取二维码状态,如果已成功,返回PC token,登录成功。

猜你喜欢

转载自blog.csdn.net/m0_51963973/article/details/129572787
今日推荐