目錄
原理解釋
網頁端 伺服器
手機端伺服器
登入成功
登入原理圖如下:
首頁 資料庫 Redis redis如何實現掃碼登陸

redis如何實現掃碼登陸

May 28, 2023 pm 02:58 PM
redis

需求介紹

首先,介紹下什麼是掃碼登入。現在,大部分的同學手機都裝有qq和淘寶,天貓等這一類軟體。而開發這些app的企業,都有他們相對應的網站。為了讓用戶在使用他們的網站時,登入更加方便和安全。這些企業提供了, 使用手機,掃一掃,就可以登入的服務。網頁登入時的效果如下:

redis如何實現掃碼登陸

#
redis如何實現掃碼登陸#

#
有很多小夥伴可能會感到很神奇,網頁上只是顯示了個二維碼,它怎麼就知道是哪個手機掃到了二維碼,並且進行登入的呢?而且,登入完成以後,還能直接把用戶資訊顯示給用戶,真的很神奇。

原理解釋

網頁端 伺服器

接下來就是對於這個服務的詳細實作。當使用者開啟網站登入頁面時,會向瀏覽器伺服器發送請求以取得登入二維碼,這是其原理。

伺服器收到請求後,隨機產生一個uuid,將這個id作為key值存入redis伺服器,同時設定一個過期時間,再過期後,使用者登入二維碼需要刷新重新取得。同時,將這個key值和本公司的驗證字串合在一起,透過二維碼生成接口,產生一個二維碼的圖片(二維碼生成,網路上有很多現成的介面和源碼,這裡不再介紹。)然後,將二維碼圖片和uuid一起回傳給使用者瀏覽器。

瀏覽器會定時向伺服器發送請求以檢查登入是否成功,這些請求包括二維碼和UUID資訊。請求中攜帶有uuid作為目前頁面的識別碼。有些同學可能會感到疑惑,因為伺服器只在Redis中儲存UUID作為鍵,那麼使用者的ID資訊又是從哪裡來的呢?

這裡確實會有用戶的id訊息,這個id訊息是由手機伺服器存入redis中的。

手機端伺服器

當瀏覽器獲得二維碼後,它將其顯示在網頁上並提示用戶:「請拿出您的手機並打開掃一掃來進行登錄」。使用者拿出手機掃描二維碼,就可以得到一個驗證資訊和一個uuid(掃描二維碼取得字串的功能在網路上同樣有很多demo,這裡就不詳細介紹了)。

由於手機端已經進行過了登錄,在訪問手機端的伺服器的時候,參數中都回攜帶一個用戶的token,手機端伺服器可以從中解析到用戶的userId(這裡從token中取值而不是手機端直接傳userid是為了安全,直接傳userid可能會被截獲和修改,token是加密的,被修改的風險會小很多)。

手機端將解析到的資料和使用者token一起作為參數,向伺服器發送驗證登入請求(這裡的伺服器是手機伺服器,手機端的伺服器跟網頁端伺服器不是同一台伺服器)。在收到請求後,伺服器會先比較參數中的驗證訊息,以確認其是否為使用者登入請求的介面。如果是,回傳一個確認訊息給手機端。

當手機端收到回應時,應該顯示登入確認框以避免使用者誤操作並提高登入體驗。用戶確認是進行的登入操作後,手機再次發送請求。伺服器拿到uuId和userId後,將使用者的userid作為value值存入redis中以uuid作為key的鍵值對中。

登入成功

然後,瀏覽器再次發送請求的時候,瀏覽器端的伺服器就可以得到一個使用者Id,並且呼叫登入的方法,聲成一個瀏覽器端的token,再瀏覽器再次發送請求的時候,將使用者資訊回傳給瀏覽器,登入成功。我們選擇儲存用戶ID而不是直接儲存用戶訊息,因為手機端和瀏覽器端的用戶資訊可能不完全相同。

登入原理圖如下:
redis如何實現掃碼登陸

     




####################################################### #################################

以上是redis如何實現掃碼登陸的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

redis集群模式怎麼搭建 redis集群模式怎麼搭建 Apr 10, 2025 pm 10:15 PM

Redis集群模式通過分片將Redis實例部署到多個服務器,提高可擴展性和可用性。搭建步驟如下:創建奇數個Redis實例,端口不同;創建3個sentinel實例,監控Redis實例並進行故障轉移;配置sentinel配置文件,添加監控Redis實例信息和故障轉移設置;配置Redis實例配置文件,啟用集群模式並指定集群信息文件路徑;創建nodes.conf文件,包含各Redis實例的信息;啟動集群,執行create命令創建集群並指定副本數量;登錄集群執行CLUSTER INFO命令驗證集群狀態;使

redis怎麼查看所有的key redis怎麼查看所有的key Apr 10, 2025 pm 07:15 PM

要查看 Redis 中的所有鍵,共有三種方法:使用 KEYS 命令返回所有匹配指定模式的鍵;使用 SCAN 命令迭代鍵並返回一組鍵;使用 INFO 命令獲取鍵的總數。

redis底層怎麼實現 redis底層怎麼實現 Apr 10, 2025 pm 07:21 PM

Redis 使用哈希表存儲數據,支持字符串、列表、哈希表、集合和有序集合等數據結構。 Redis 通過快照 (RDB) 和追加只寫 (AOF) 機制持久化數據。 Redis 使用主從復制來提高數據可用性。 Redis 使用單線程事件循環處理連接和命令,保證數據原子性和一致性。 Redis 為鍵設置過期時間,並使用 lazy 刪除機制刪除過期鍵。

redis指令怎麼用 redis指令怎麼用 Apr 10, 2025 pm 08:45 PM

使用 Redis 指令需要以下步驟:打開 Redis 客戶端。輸入指令(動詞 鍵 值)。提供所需參數(因指令而異)。按 Enter 執行指令。 Redis 返迴響應,指示操作結果(通常為 OK 或 -ERR)。

redis怎麼讀取隊列 redis怎麼讀取隊列 Apr 10, 2025 pm 10:12 PM

要從 Redis 讀取隊列,需要獲取隊列名稱、使用 LPOP 命令讀取元素,並處理空隊列。具體步驟如下:獲取隊列名稱:以 "queue:" 前綴命名,如 "queue:my-queue"。使用 LPOP 命令:從隊列頭部彈出元素並返回其值,如 LPOP queue:my-queue。處理空隊列:如果隊列為空,LPOP 返回 nil,可先檢查隊列是否存在再讀取元素。

redis計數器怎麼實現 redis計數器怎麼實現 Apr 10, 2025 pm 10:21 PM

Redis計數器是一種使用Redis鍵值對存儲來實現計數操作的機制,包含以下步驟:創建計數器鍵、增加計數、減少計數、重置計數和獲取計數。 Redis計數器的優勢包括速度快、高並發、持久性和簡單易用。它可用於用戶訪問計數、實時指標跟踪、遊戲分數和排名以及訂單處理計數等場景。

redis怎麼讀源碼 redis怎麼讀源碼 Apr 10, 2025 pm 08:27 PM

理解 Redis 源碼的最佳方法是逐步進行:熟悉 Redis 基礎知識。選擇一個特定的模塊或功能作為起點。從模塊或功能的入口點開始,逐行查看代碼。通過函數調用鏈查看代碼。熟悉 Redis 使用的底層數據結構。識別 Redis 使用的算法。

redis怎麼使用鎖 redis怎麼使用鎖 Apr 10, 2025 pm 08:39 PM

使用Redis進行鎖操作需要通過SETNX命令獲取鎖,然後使用EXPIRE命令設置過期時間。具體步驟為:(1) 使用SETNX命令嘗試設置一個鍵值對;(2) 使用EXPIRE命令為鎖設置過期時間;(3) 當不再需要鎖時,使用DEL命令刪除該鎖。

See all articles