搜尋
首頁資料庫Redisredis如何實現掃碼登陸

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刪除
了解NOSQL:Redis的關鍵特徵了解NOSQL:Redis的關鍵特徵Apr 13, 2025 am 12:17 AM

Redis的關鍵特性包括速度、靈活性和豐富的數據結構支持。 1)速度:Redis作為內存數據庫,讀寫操作幾乎瞬時,適用於緩存和會話管理。 2)靈活性:支持多種數據結構,如字符串、列表、集合等,適用於復雜數據處理。 3)數據結構支持:提供字符串、列表、集合、哈希表等,適合不同業務需求。

REDIS:確定其主要功能REDIS:確定其主要功能Apr 12, 2025 am 12:01 AM

Redis的核心功能是高性能的內存數據存儲和處理系統。 1)高速數據訪問:Redis將數據存儲在內存中,提供微秒級別的讀寫速度。 2)豐富的數據結構:支持字符串、列表、集合等,適應多種應用場景。 3)持久化:通過RDB和AOF方式將數據持久化到磁盤。 4)發布訂閱:可用於消息隊列或實時通信系統。

REDIS:流行數據結構指南REDIS:流行數據結構指南Apr 11, 2025 am 12:04 AM

Redis支持多種數據結構,具體包括:1.字符串(String),適合存儲單一值數據;2.列表(List),適用於隊列和棧;3.集合(Set),用於存儲不重複數據;4.有序集合(SortedSet),適用於排行榜和優先級隊列;5.哈希表(Hash),適合存儲對像或結構化數據。

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

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

redis命令行怎麼用redis命令行怎麼用Apr 10, 2025 pm 10:18 PM

使用 Redis 命令行工具 (redis-cli) 可通過以下步驟管理和操作 Redis:連接到服務器,指定地址和端口。使用命令名稱和參數向服務器發送命令。使用 HELP 命令查看特定命令的幫助信息。使用 QUIT 命令退出命令行工具。

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怎麼讀取隊列redis怎麼讀取隊列Apr 10, 2025 pm 10:12 PM

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

redis集群zset怎麼使用redis集群zset怎麼使用Apr 10, 2025 pm 10:09 PM

Redis 集群中使用 zset:zset 是一種有序集合,將元素與評分關聯。分片策略: a. 哈希分片:根據 zset 鍵的哈希值分佈。 b. 範圍分片:根據元素評分劃分為範圍,並將每個範圍分配給不同的節點。讀寫操作: a. 讀操作:如果 zset 鍵屬於當前節點的分片,則在本地處理;否則,路由到相應的分片。 b. 寫入操作:始終路由到持有 zset 鍵的分片。

See all articles

熱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尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境