通过手持端控制pc端登陆问题(扫码登录)

支付宝对于网银来说,最方便的莫过于免去了一大堆乱七八糟的证书的安装过程,但是支付宝本身也是有证书的,当然pc端的支付宝页面也可以不通过证书登录,而是通过手机二维码扫描来判断登陆。

那么问题来了,如果我们自己的项目要采取类似的东西,该如何做呢?

pc页面和支付宝客户端是2个不同的客户端,所以支付宝客户端扫描并认证后,必须生成用户登录标识,然后通知pc页面已经登陆成功,执行跳转,跳转后的页面会根据支付宝客户端生成的表示,去读取用户信息,大概的流程如下图所示。

扫码登录

  1. 首先打开页面,服务器生成一个二维码(或返回一个包含唯一标识符的地址,由js生成二维码)
  2. 等待用户扫码,同时,页面不断的去服务器轮训获取扫码结果
  3. 用户扫码后,app会访问二维码地址,服务器会生成一个唯一数据存在redis或memcache等介质
  4. 一旦介质里有了指定的数据,轮训接口会返回登陆成功的消息,同时带上session标识
  5. 页面收到登陆成功的消息后,把session标识种在cookie里或加到url、header里,同时跳转