面試官:聊聊二維碼掃碼登錄的原理?

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

二維碼,大傢再熟悉不過瞭

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

const token = {
acountid:'賬號ID',
deviceid:'登錄的設備ID',
deviceType:'設備類型,如 iso,android,pc......',
}

赞(0)