日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

聊一聊二维码扫描登录原理

發(fā)布時(shí)間:2025/3/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊一聊二维码扫描登录原理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

點(diǎn)擊上方?好好學(xué)java?,選擇?星標(biāo)?公眾號(hào)

重磅資訊、干貨,第一時(shí)間送達(dá) 今日推薦:2 個(gè)月的面試親身經(jīng)歷告訴大家,如何進(jìn)入大廠?

掃二維碼登錄現(xiàn)在比較常見(jiàn),比如微信、支付寶等 PC 端登錄,并且好像每款 APP 都支持掃碼登錄,不搞個(gè)掃碼登錄都不好意思。作為技術(shù)人員,不知道您對(duì)這背后的實(shí)現(xiàn)邏輯是否感興趣,反正我是一直都對(duì)這背后實(shí)現(xiàn)好奇。最近剛好看到一個(gè)關(guān)于掃碼登錄原理的視頻,于是就整理出來(lái)了這篇文章,希望對(duì)您有所幫助。

本文共三個(gè)主題:

  • 什么是二維碼。

  • 移動(dòng)端基于 token 的認(rèn)證機(jī)制。

  • 二維碼掃碼登錄的原理。

1、什么是二維碼

?

二維碼又稱二維條碼,常見(jiàn)的二維碼為QR Code,QR全稱Quick Response,是一個(gè)近幾年來(lái)移動(dòng)設(shè)備上超流行的一種編碼方式,它比傳統(tǒng)的Bar Code條形碼能存更多的信息,也能表示更多的數(shù)據(jù)類型。----來(lái)自百度百科

?

在商品上,一般都會(huì)有條形碼,條形碼也稱為一維碼,條形碼只能表示一串?dāng)?shù)字。二維碼要比條形碼豐富很多,可以存儲(chǔ)數(shù)字、字符串、圖片、文件等,比如我們可以把 www.baidu.com 存儲(chǔ)在二維碼中,掃碼二維碼我們就可以獲取到百度的地址。

可能用文字說(shuō)起來(lái)還是比較難理解,您可以百度:草料二維碼,一款二維碼生成和解析工具,玩一玩你就知道二維碼是個(gè)啥了。

2、移動(dòng)端基于 token 的認(rèn)證機(jī)制

在了解掃碼登錄原理之前,有必要先了解移動(dòng)端基于 token 的認(rèn)證機(jī)制,對(duì)理解掃碼登錄原理還是非常有幫助的。基于 token 的認(rèn)證機(jī)制跟我們常用的賬號(hào)密碼認(rèn)證方式有較大的不同,安全系數(shù)比賬號(hào)密碼要高,如果每次驗(yàn)證都傳入賬號(hào)密碼,那么被劫持的概率就變大了。

基于 token 的認(rèn)證機(jī)制流程圖,如下圖所示:

基于token的認(rèn)證機(jī)制

基于 token 的認(rèn)證機(jī)制,只有在第一次使用需要輸入賬號(hào)密碼,后續(xù)使用將不在輸入賬號(hào)密碼。「其實(shí)在登陸的時(shí)候不僅傳入賬號(hào)、密碼,還傳入了手機(jī)的設(shè)備信息。在服務(wù)端驗(yàn)證賬號(hào)、密碼正確后,服務(wù)端會(huì)做兩件事」

第一,將賬號(hào)與設(shè)備關(guān)聯(lián)起來(lái),在某種意義上,設(shè)備信息就代表著賬號(hào)。

第二,生成一個(gè) token 令牌,并且在 token 與賬號(hào)、設(shè)備關(guān)聯(lián),類似于key/value,token 作為 key ,賬號(hào)、設(shè)備信息作為value,持久化在磁盤(pán)上。

將 token 返回給移動(dòng)端,移動(dòng)端將 token 存入在本地,往后移動(dòng)端都通過(guò) token 訪問(wèn)服務(wù)端 API ,當(dāng)然除了 token 之外,還需要攜帶設(shè)備信息,因?yàn)?token 可能會(huì)被劫持。帶上設(shè)備信息之后,就算 token 被劫持也沒(méi)有關(guān)系,因?yàn)樵O(shè)備信息是唯一的。

這就是基于 token 的認(rèn)證機(jī)制,將賬號(hào)密碼換成了 token、設(shè)備信息,從而提高了安全系數(shù),可別小看這個(gè) token ,token 是身份憑證,在掃碼登錄的時(shí)候也會(huì)用到。

3、二維碼掃碼登錄的原理

好了,知道了移動(dòng)端基于 token 的認(rèn)證機(jī)制后,接下來(lái)就進(jìn)入我們的主題:二維碼掃碼登陸的原理。先上二維碼掃碼登錄的流程圖:

掃碼登錄全流程

掃碼登錄可以分為三個(gè)階段:「待掃描、已掃描待確認(rèn)、已確認(rèn)」。我們就一一來(lái)看看這三個(gè)階段。

「1、待掃描階段」

待掃描階段也就是流程圖中 1~5 階段,即生成二維碼階段,這個(gè)階段跟移動(dòng)端沒(méi)有關(guān)系,是 PC 端跟服務(wù)端的交互過(guò)程。

首先 PC 端攜帶設(shè)備信息向服務(wù)端發(fā)起生成二維碼請(qǐng)求,服務(wù)端會(huì)生成唯一的二維碼 ID,你可以理解為 UUID,并且將 二維碼 ID 跟 PC 設(shè)備信息關(guān)聯(lián)起來(lái),這跟移動(dòng)端登錄有點(diǎn)相似。

PC 端接受到二維碼 ID 之后,將二維碼 ID 以二維碼的形式展示,等待移動(dòng)端掃碼。此時(shí)在 PC 端會(huì)啟動(dòng)一個(gè)定時(shí)器,輪詢查詢二維碼的狀態(tài)。「如果移動(dòng)端未掃描的話,那么一段時(shí)間后二維碼將會(huì)失效。」

「2、已掃描待確認(rèn)階段」流程圖中第 6 ~ 10 階段,我們?cè)?PC 端登錄微信時(shí),手機(jī)掃碼后,PC 端的二維碼會(huì)變成已掃碼,請(qǐng)?jiān)谑謾C(jī)端確認(rèn)。這個(gè)階段是移動(dòng)端跟服務(wù)端交互的過(guò)程。

首先移動(dòng)端掃描二維碼,獲取二維碼 ID,「然后將手機(jī)端登錄的信息憑證(token)和 二維碼 ID 作為參數(shù)發(fā)送給服務(wù)端」,此時(shí)的手機(jī)一定是登錄的,不存在沒(méi)登錄的情況。

服務(wù)端接受請(qǐng)求后,會(huì)將 token 與二維碼 ID 關(guān)聯(lián),為什么需要關(guān)聯(lián)呢?你想想,我們使用微信時(shí),移動(dòng)端退出, PC 端是不是也需要退出,這個(gè)關(guān)聯(lián)就有點(diǎn)把子作用了。然后會(huì)「生成一個(gè)一次性 token,這個(gè) token 會(huì)返回給移動(dòng)端,一次性 token 用作確認(rèn)時(shí)候的憑證」

PC 端的定時(shí)器,會(huì)輪詢到二維碼的狀態(tài)已經(jīng)發(fā)生變化,會(huì)將 PC 端的二維碼更新為已掃描,請(qǐng)確認(rèn)。

「3、已確認(rèn)」

流程圖中的 第 11 ~ 15 步驟,這是掃碼登錄的最后階段,移動(dòng)端攜帶上一步驟中獲取的臨時(shí) token ,確認(rèn)登錄,「服務(wù)端校對(duì)完成后,會(huì)更新二維碼狀態(tài),并且給 PC 端生成一個(gè)正式的 token ,后續(xù) PC 端就是持有這個(gè) token 訪問(wèn)服務(wù)端」

PC 端的定時(shí)器,輪詢到了二維碼狀態(tài)為登錄狀態(tài),并且會(huì)獲取到了生成的 token ,完成登錄,后續(xù)訪問(wèn)都基于 token 完成。

在服務(wù)器端會(huì)跟手機(jī)端一樣,維護(hù)著 token 跟二維碼、PC 設(shè)備信息、賬號(hào)等信息,后續(xù)的認(rèn)證也是基于 token 和設(shè)備信息來(lái)完成。

到此,二維碼掃描登錄原理就差不多了,二維碼掃描登錄在原理上不難理解,跟 OAuth2.0 有一絲的相似之處,但是實(shí)現(xiàn)起來(lái)可能就比較復(fù)雜。

希望此文對(duì)您的學(xué)習(xí)或者工作有所幫助。同時(shí)希望您在評(píng)論區(qū)聊聊您的掃碼登錄工作經(jīng)歷,祝好。

最后,再附上我歷時(shí)三個(gè)月總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,這是本人這幾年及春招的總結(jié),目前,已經(jīng)拿到了騰訊等大廠offer,拿去不謝,github 地址:https://github.com/OUYANGSIHAI/JavaInterview

這么辛苦總結(jié),給個(gè)star好不好。?點(diǎn)擊閱讀原文,直達(dá)

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的聊一聊二维码扫描登录原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。