色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

電腦端微信登錄時需要手機掃碼

錢淋西2年前17瀏覽0評論

電腦端微信登錄時需要手機掃碼?

結論:這是微信系的慣用做法,原因是——安全。

前言

本文從技術原理上說說,微信為什么要這么做,且非做不可。

從安全性上看,用手機掃碼,高于手機短信驗證碼,或賬密輸入。

掃碼過程都發生了什么

下面主要從二維碼生成、手機掃碼確認、登陸成功說明。下圖是示意圖。

1 - 客戶端與服務器的配合

首先用戶打開微信客戶端,向服務器發送獲取登錄二維碼的請求。

服務器收到請求后,隨機生成一個uuid,將這個id作為key值存入redis服務器,同時設置一個過期時間,再過期后,用戶登錄二維碼需要進行刷新重新獲取。

同時,將這個key值和驗證字符串合在一起,通過二維碼生成接口,生成一個二維碼的圖片。然后,將二維碼圖片和uuid一起返回給用戶。

微信客戶端拿到二維碼和uuid后,會每隔一定時間向服務器發送一次,登錄是否成功的請求。請求中攜帶有uuid作為當前頁面的標識符。

那么,服務器只存了個uuid在redis中作為key值,怎么會有用戶的id信息呢?這里確實會有用戶的id信息,這個id信息是由手機服務器存入redis中的。

2 - 手機端與服務器的配合

微信客戶端拿到二維碼后,將二維碼展示出來。用戶拿出手機掃描二維碼,就可以得到一個驗證信息和一個uuid。

由于手機端已經進行過了登錄,在訪問手機端的服務器的時候,參數中都會攜帶一個用戶的token,手機端服務器可以從中解析到用戶的userId。

這里從token中取值而不是手機端直接傳userid是為了安全,直接傳userid可能會被截獲和修改,token是加密的,被修改的風險會小很多。

手機端將解析到的數據和用戶token一起作為參數,向服務器發送驗證登錄請求。

服務器收到請求后,首先對比參數中的驗證信息,確定是否為用戶登錄請求接口。如果是,返回一個確認信息給手機端。

手機端收到返回后,將登錄確認框顯示給用戶。用戶確認是進行的登錄操作后,手機再次發送請求。服務器拿到uuId和userId后,將用戶的userid作為value值存入redis中以uuid作為key的鍵值對中。

3 - 登錄成功

客戶端再次發送請求的時候,服務器就可以得到一個用戶Id,并調用登錄的方法,生成一個客戶端的token,在客戶端再次發送請求的時候,將用戶信息返回給客戶端,登錄成功。

這里存儲用戶id而不是直接存儲用戶信息是因為,手機端的用戶信息,不一定是和客戶端的用戶信息完全一致。

結語

比單純的賬密登錄,掃碼登錄使用了一臺登錄的設備,授權另一個設備登錄,從硬件上杜絕了很多不穩定因素。

這也是很多大型的網站通用做法,比如淘寶、支付寶、阿里云等,使用手機端授權,登入其他設備。

我是@程序員小助手,持續分享編程與程序員成長相關的內容,歡迎關注~~