【面试 新谈】【第十五篇】实现扫码登录的设计思想

实现扫码登录的设计思想

三步走即可完成!!

 

整体步骤如下:

1.PC端打开登录页面,输入账号密码

点击登录,会第一次和服务器发生请求交互,服务器端,会返回给PC端一个带有ID唯一标识的二维码【此时ID相关的本次登录记录,会记录在后台服务器】

 

 

2.PC端会弹出来一个二维码,供用户扫码登录

 

这一个二维码识别出来,是如下的一串内容

http://mp.weixin.qq.com/wap/loginauthqrcode?action=scan&qrticket=3545849693b454355c5e32f183bbb1a9#wechat_redirect

可以看到有一个ID唯一标识包含在二维码中。

 

 

 

而此时从二维码弹出,直到移动端用户扫描二维码之前的中间的时间段内,PC端的页面会做一个轮询动作,一直在对后台服务器做请求,询问服务器这个二维码是否被移动端的用户扫描了没有。【直到本二维码设定的超时时间之前,轮询的动作会一直做下去】

 

 

 

3.移动端完成扫描动作,通知到服务器,将本次扫码的用户信息和这个二维码的ID唯一标识绑定起来

PC端的轮询一直在访问服务器,是否二维码已经被扫描了。当服务器告知,本次二维码的扫描动作已经完成,PC端就会成功跳转到登陆后的网页内,并把服务器返回的和ID绑定的微信用户信息,展示在登陆成功的页面。

 

 

 

 

一、整个的过程中,几方分别做的事情

PC端做了两件事:

  1》访问服务器,返回二维码+ID

  2》轮询服务器,等待服务器返回ID+绑定用户信息

 

移动端做了一件事:

  1》扫描二维码,通知服务器,ID+用户信息传递给服务器

 

服务器做了三件事情:

  1》PC端请求过来时候,返回给PC端一个拥有唯一标识ID的二维码

  2》移动端传递ID+用户信息过来时,服务器对ID+用户信息做一个绑定

  3》应对PC端的轮询请求,响应给PC端,本ID对应的用户信息

 

 

二、针对PC端的轮询操作,服务器端需要做的是:

  保证ID唯一标识的做好缓存,避免大量请求直接访问到数据库

 

三、对于服务器怎么通知到PC端,用户扫码成功,除了PC端做轮询的方式外,还有其他的方法么?

  服务器端配合使用socket,做到服务器端消息通知PC端,完成服务器端的通知!

 

posted @ 2019-04-10 20:16  Angel挤一挤  阅读(1346)  评论(0编辑  收藏  举报