日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

二維碼掃碼登錄原理,其實比你想的要簡單的多

admin
2025年3月22日 22:8 本文熱度 220

今天分享的是一位讀者在去年秋招面試抖音被提問的一個問題,剛好刷到一篇不錯的文章解答這個問題,分享一下。


PS:這個問題在面試中還是比較常見的,阿里、騰訊、用友、京東、小紅書等中大廠的面試都問過這個問題


下面是正文。

前幾天看了極客時間一個二維碼的視頻[1],寫的不錯,這里總結下。

?

在日常生活中,二維碼出現在很多場景,比如超市支付、系統登錄、應用下載等等。了解二維碼的原理,可以為技術人員在技術選型時提供新的思路。對于非技術人員呢,除了解惑,還可以引導他更好地辨別生活中遇到的各種二維碼,防止上當受騙。

二維碼,大家再熟悉不過了

購物掃個碼,吃飯掃個碼,坐公交也掃個碼


在掃碼的過程中,大家可能會有疑問:這二維碼安全嗎?會不會泄漏我的個人信息?更深度的用戶還會考慮:我的系統是不是也可以搞一個二維碼來推廣呢?

這時候就需要了解一下二維碼背后的技術和邏輯了!

二維碼最常用的場景之一就是通過手機端應用掃描 PC 或者 WEB 端的二維碼,來登錄同一個系統。比如手機微信掃碼登錄 PC 端微信,手機淘寶掃碼登錄 PC 端淘寶。那么就讓我們來看一下,二維碼登錄是怎么操作的!


1

二維碼登錄的本質


二維碼登錄本質上也是一種登錄認證方式。既然是登錄認證,要做的也就兩件事情!

  • 告訴系統我是誰
  • 向系統證明我是誰


比如賬號密碼登錄,賬號就是告訴系統我是誰, 密碼就是向系統證明我是誰; 比如手機驗證碼登錄,手機號就是告訴系統我是誰,驗證碼就是向系統證明我是誰;

那么掃碼登錄是怎么做到這兩件事情的呢?我們一起來考慮一下。

手機端應用掃 PC 端二維碼,手機端確認后,賬號就在 PC 端登錄成功了!這里,PC 端登錄的賬號肯定與手機端是同一個賬號。不可能手機端登錄的是賬號 A,而掃碼登錄以后,PC 端登錄的是賬號 B。

所以,第一件事情,告訴系統我是誰,是比較清楚的!

通過掃描二維碼,把手機端的賬號信息傳遞到 PC 端,至于是怎么傳的,我們后面再說

第二件事情,向系統證明我是誰。掃碼登錄過程中,用戶并沒有去輸入密碼,也沒有輸入驗證碼,或者其他什么碼。那是怎么證明的呢?

有些同學會想到,是不是掃碼過程中,把密碼傳到了 PC 端呢?但這是不可能的。因為那樣太不安全的,客戶端也根本不會去存儲密碼。我們仔細想一下,其實手機端 APP 它是已經登錄過的,就是說手機端是已經通過登錄認證。所說只要掃碼確認是這個手機且是這個賬號操作的,其實就能間接證明我誰。


2

認識二維碼


那么如何做確認呢?我們后面會詳細說明,在這之前我們需要先認識一下二維碼!在認識二維碼之前我們先看一下一維碼!


所謂一維碼,也就是條形碼,超市里的條形碼--這個相信大家都非常熟悉,條形碼實際上就是一串數字,它上面存儲了商品的序列號。

二維碼其實與條形碼類似,只不過它存儲的不一定是數字,還可以是任何的字符串,你可以認為,它就是字符串的另外一種表現形式,

在搜索引擎中搜索二維碼,你可以找到很多在線生成二維碼的工具網站,這些網站可以提供字符串與二維碼之間相互轉換的功能,比如 草料二維碼網站[2]


在左邊的輸入框就可以輸入你的內容,它可以是文本、網址,文件........。然后就可以生成代表它們的二維碼。

你也可以把二維碼上傳,進行”解碼“,然后就可以解析出二維碼代表的含義


3

系統認證機制


認識了二維碼,我們了解一下移動互聯網下的系統認證機制。

前面我們說過,為了安全,手機端它是不會存儲你的登錄密碼的。但是在日常使用過程中,我們應該會注意到,只有在你的應用下載下來后,第一次登錄的時候,才需要進行一個賬號密碼的登錄, 那之后呢 即使這個應用進程被殺掉,或者手機重啟,都是不需要再次輸入賬號密碼的,它可以自動登錄。

其實這背后就是一套基于 token 的認證機制,我們來看一下這套機制是怎么運行的,


  1. 賬號密碼登錄時,客戶端會將設備信息一起傳遞給服務端,
  2. 如果賬號密碼校驗通過,服務端會把賬號與設備進行一個綁定,存在一個數據結構中,這個數據結構中包含了賬號 ID,設備 ID,設備類型等等


const token = {
  acountid:'賬號ID',
  deviceid:'登錄的設備ID',
  deviceType:'設備類型,如 iso,android,pc......',
}
然后服務端會生成一個 token,用它來映射數據結構,這個 token 其實就是一串有著特殊意義的字符串,它的意義就在于,通過它可以找到對應的賬號與設備信息。

  1. 客戶端得到這個 token 后,需要進行一個本地保存,每次訪問系統 API 都攜帶上 token 與設備信息。
  2. 服務端就可以通過 token 找到與它綁定的賬號與設備信息,然后把綁定的設備信息與客戶端每次傳來的設備信息進行比較, 如果相同,那么校驗通過,返回 AP 接口響應數據, 如果不同,那就是校驗不通過拒絕訪問。


從前面這個流程,我們可以看到,客戶端不會也沒必要保存你的密碼,相反,它是保存了 token。可能有些同學會想,這個 token 這么重要,萬一被別人知道了怎么辦。實際上,知道了也沒有影響, 因為設備信息是唯一的,只要你的設備信息別人不知道, 別人拿其他設備來訪問,驗證也是不通過的。

可以說,客戶端登錄的目的,就是獲得屬于自己的 token。

那么在掃碼登錄過程中,PC 端是怎么獲得屬于自己的 token 呢?不可能手機端直接把自己的 token 給 PC 端用!token 只能屬于某個客戶端私有,其他人或者是其他客戶端是用不了的。在分析這個問題之前,我們有必要先梳理一下,掃描二維碼登錄的一般步驟是什么樣的。這可以幫助我們梳理清楚整個過程,


4

掃描二維碼登錄的一般步驟


大概流程


  1. 掃碼前,手機端應用是已登錄狀態,PC 端顯示一個二維碼,等待掃描
  2. 手機端打開應用,掃描 PC 端的二維碼,掃描后,會提示"已掃描,請在手機端點擊確認"
  3. 用戶在手機端點擊確認,確認后 PC 端登錄就成功了


可以看到,二維碼在中間有三個狀態, 待掃描,已掃描待確認,已確認。那么可以想象


  1. 二維碼的背后它一定存在一個唯一性的 ID,當二維碼生成時,這個 ID 也一起生成,并且綁定了 PC 端的設備信息
  2. 手機去掃描這個二維碼
  3. 二維碼切換為 已掃描待確認狀態, 此時就會將賬號信息與這個 ID 綁定
  4. 當手機端確認登錄時,它就會生成 PC 端用于登錄的 token,并返回給 PC 端


好了,到這里,基本思路就已經清晰了,接下來我們把整個過程再具體化一下

二維碼準備

按二維碼不同狀態來看, 首先是等待掃描狀態,用戶打開 PC 端,切換到二維碼登錄界面時。


  1. PC 端向服務端發起請求,告訴服務端,我要生成用戶登錄的二維碼,并且把 PC 端設備信息也傳遞給服務端
  2. 服務端收到請求后,它生成二維碼 ID,并將二維碼 ID 與 PC 端設備信息進行綁定
  3. 然后把二維碼 ID 返回給 PC 端
  4. PC 端收到二維碼 ID 后,生成二維碼(二維碼中肯定包含了 ID)
  5. 為了及時知道二維碼的狀態,客戶端在展現二維碼后,PC 端不斷的輪詢服務端,比如每隔一秒就輪詢一次,請求服務端告訴當前二維碼的狀態及相關信息


二維碼已經準好了,接下來就是掃描狀態

掃描狀態切換


  1. 用戶用手機去掃描 PC 端的二維碼,通過二維碼內容取到其中的二維碼 ID
  2. 再調用服務端 API 將移動端的身份信息與二維碼 ID 一起發送給服務端
  3. 服務端接收到后,它可以將身份信息與二維碼 ID 進行綁定,生成臨時 token。然后返回給手機端
  4. 因為 PC 端一直在輪詢二維碼狀態,所以這時候二維碼狀態發生了改變,它就可以在界面上把二維碼狀態更新為已掃描


那么為什么需要返回給手機端一個臨時 token 呢?臨時 token 與 token 一樣,它也是一種身份憑證,不同的地方在于它只能用一次,用過就失效。

在第三步驟中返回臨時 token,為的就是手機端在下一步操作時,可以用它作為憑證。以此確保掃碼,登錄兩步操作是同一部手機端發出的,

狀態確認

最后就是狀態的確認了。


  1. 手機端在接收到臨時 token 后會彈出確認登錄界面,用戶點擊確認時,手機端攜帶臨時 token 用來調用服務端的接口,告訴服務端,我已經確認
  2. 服務端收到確認后,根據二維碼 ID 綁定的設備信息與賬號信息,生成用戶 PC 端登錄的 token
  3. 這時候 PC 端的輪詢接口,它就可以得知二維碼的狀態已經變成了"已確認"。并且從服務端可以獲取到用戶登錄的 token
  4. 到這里,登錄就成功了,后端 PC 端就可以用 token 去訪問服務端的資源了


掃碼動作的基礎流程都講完了,有些細節還沒有深入介紹,

比如二維碼的內容是什么?

  • 可以是二維碼 ID
  • 可以是包含二維碼 ID 的一個 url 地址


在掃碼確認這一步,用戶取消了怎么處理?這些細節都留給大家思考


5

總結



我們從登陸的本質觸發,探索二維碼掃碼登錄是如何做到的

  1. 告訴系統我是誰
  2. 向系統證明我誰


在這個過程中,我們先簡單講了兩個前提知識,

  • 一個是二維碼原理,
  • 一個是基于 token 的認證機制。


然后我們以二維碼狀態為軸,分析了這背后的邏輯: 通過 token 認證機制與二維碼狀態變化來實現掃碼登錄.

需要指出的是,前面的講的登錄流程,它適用于同一個系統的 PC 端,WEB 端,移動端。

平時我們還有另外一種場景也比較常見,那就是通過第三方應用來掃碼登錄,比如極客時間/掘金 都可以選擇微信/QQ 等掃碼登錄,那么這種通過第三方應用掃碼登錄又是什么原理呢?

來源:juejin.cn/post/6940976355097985032

END


閱讀原文:原文鏈接


該文章在 2025/3/24 17:19:22 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 更新日韩| 国产女主播精品大秀系列 | 中文字幕欧美中日韩精品 | 亚洲一区在线综合 | 中文字幕一区在线观看视频 | 国产福利观| 一级理论片免费观看在线 | 一区二区三区精品视频免费播放 | 91大神 | 电影在线观看不卡 | 国产精品一区99国产aaa精 | 国产精品自在在线香蕉 | 欧美激情全球免费视频 | 高清在线一区 | 国产自经典三级在线观看 | 在线日本妇人成熟免费 | 日韩亚洲第一页 | 97色伦| 成l人在线观看线路1 | 欧美一区韩国二区老 | 中文字幕第一页亚洲 | 日韩国产欧美在线 | 最新日本一道免费一 | 国产亚洲精品bt | 亚洲第一综合天堂另类专 | 国产一区自拍欧美 | 中文字幕乱老妇 | 国语自产偷成人精品视频 | 国产全黄三级播放 | 日本中文字幕专区视频在线 | 亚洲欧美日韩中文另类不卡 | 在线天堂免费中文字幕 | 亚洲国产婷婷综合在线精品 | 国产精品视频每日更新 | 91短视频污下载 | 资源在线观看高清国产 | 韩国美女一区二区 | 国产乱了真 | 亚洲а∨天堂2025在线网站 | 亚洲日韩精品免费视频91蜜桃 | 欧美日韩深夜视频在线观看 |