天天看点

Java扫码登录原理Java扫码登录原理

Java扫码登录原理

一、博主自言

        最近公司项目中遇到了,发现不少朋友都对这个不了解,正好自己也对这感兴趣。所以就研究了下。

        扫码登录技术觉得是不错的干货。就分享给打大家了。希望会对大家有所帮助,欢迎留言提问。

        PS文章底部是我的代码下载链接,大家可以自行下载。

二、原理简介

流程图

Java扫码登录原理Java扫码登录原理

1、进入网站-生成UUID

2、跳转到二维码页面(二维码的生成与UUID关联)

3、二维码页面写一个js,自动请求服务器查询二维码是否被扫

4、服务器收到请求,查询,如果还没被扫,进入等待,先不返回结果

5、手机APP扫码,会向后台发送请求,改变uuid有关的状态,这样服务器就会接受到请求。

6、一旦被扫,立即返回结果,页面js收到响应,做后续处理

通过流程图和我的原理要点,相信大家对扫码登录原理有了差不多的认识了。

三、主要代码实现

工具

        主要用的了zxing(后台生成二维码要用的jar包)。

        其他就是最基本的 jquery 之类的了,这些相信大家项目中都有。

代码实现

    生成UUID

Java扫码登录原理Java扫码登录原理

    生成二维码页面部分以及页面JS

Java扫码登录原理Java扫码登录原理
Java扫码登录原理Java扫码登录原理

    Js请求服务器查询是否被扫

Java扫码登录原理Java扫码登录原理

    后台通过zxing生成二维码

Java扫码登录原理Java扫码登录原理

其中会用到两个对象 一个是用来多线程缓存的PoolCache 一个是用来状态赋值的ScanPool

Java扫码登录原理Java扫码登录原理

ScanPool

Java扫码登录原理Java扫码登录原理
Java扫码登录原理Java扫码登录原理

    查询是否被扫描

Java扫码登录原理Java扫码登录原理

    被成功扫描后

Java扫码登录原理Java扫码登录原理

基本上主要的代码就是上面那些了。

四、备注赠言

关于包的引用

POM.xml文件中,不能少以下两个包的引用

Java扫码登录原理Java扫码登录原理

五、实际优化

        关于缓存状态这一块可以用redis去优化,这里我就不实际叙述了。

        附上地址,可以直接运行。项目下下来放入ide,直接run App.java

      代码下载链接:

      https://download.csdn.net/download/qq_25814003/10362610