天天看點

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