本文已收录到Github仓库,里面包括计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招代招等核心知识点分享,欢迎star~Github地址:https://github.com/Tyson0314/Java-learning今天给大家介绍一下如何扫码登录功能的设计。扫码登录功能主要分为待扫、扫码待确认、待确认三个阶段。整体流程图如图所示。让我们分阶段看一下设计原则。1.待扫描的载物台首先是待扫描的载物台。这个阶段是PC与服务器的交互过程。用户每次打开PC端登录请求,系统返回一个唯一的二维码ID,并将二维码ID的信息绘制成二维码返回给用户。这里的二维码ID必须是唯一的,后续流程会将二维码ID与身份信息进行绑定。如果不唯一,将导致您登录其他用户的账户或其他用户登录您的账户。此时PC端会启动一个定时器,轮询二维码是否被扫描到。如果手机端不扫描,二维码会在一段时间后失效。该阶段的交互流程如下图所示。2、扫描待确认阶段第二阶段为扫描待确认阶段,主要是移动端与服务器交互的过程。首先,移动终端扫描二维码获取二维码ID,然后将移动终端的登录凭证(token)和二维码ID作为参数发送给服务器。这个时候手机之前已经登录过了,没有登录。案件。服务器接受请求后,会将token与二维码ID关联起来,然后生成一个临时token,返回给移动端,临时token作为登录确认凭证。PC端定时器会轮询二维码状态是否有变化,并更新PC端二维码为已扫描,请手机端确认。为什么手机端会有确认的操作?如果不确认这个链接,很容易被坏人截取token,假装登录。所以二维码扫描必须要有这个确认页面,让用户确认是否登录。另外,二维码后扫码确认后,会向用户的APP或手机发送登录提醒通知,提示用户如果未自行登录,请立即修改密码。这个阶段是一个如下图所示的交互过程。3、最后阶段扫码登录已经确认,用户点击确认登录,移动端使用上一步获取的临时token访问服务器。服务器端校对完成后,会更新二维码的状态,并为PC端生成官方token。随后的PC持有此令牌以访问服务器。这个阶段是一个如下图所示的交互过程。以上就是整个扫码登录功能的详细设计!最后给大家分享一个Github仓库,里面有大斌编译的300多本经典计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构还有算法,机器学习,编程生活等等,可以star一下,下次找书的时候可以直接在上面搜索,仓库持续更新中~Github地址:https://github.com/Tyson0314/java-books