如何限制一個賬號只在一處登陸

大家好,我是廣漂程序員DevinRock!

1. 需求分析

前陣子,和問答群里一個前端朋友,隨便嘮了嘮。期間他問了我一個問題,讓我印象深刻。

他問的是,限制同一賬號只能在一處設備上登錄,是如何實現的?并且,他還把這個功能稱為“單點登錄”。

我說這不叫“單點登錄”,這是“單設備登錄”。

于是,當時對此概念區分不清的他,和我在語言上開始了深度糾纏。

所以在后面我就想,這個功能問題有必要整理一下,分享給現在還不清楚兩者概念的朋友們。

9a30abf1c5bf4d9db85486cb1d3460cc.png

?

2. 功能實現

先聊聊“單點登錄”和“單設備登錄”區別,再說說實現“單設備登錄”的步驟。

2.1?單點登錄和單設備登錄的區別

“單點登錄”和“單設備登錄”是兩個完全不同的概念。

單設備登錄指:在某個給定的時間,同一用戶只能在一臺設備上進行登錄,如果在其他設備上嘗試登錄,先前的會話將被中斷或注銷。

單點登錄(簡稱SSO)指:允許用戶使用一組憑據(如用戶名和密碼)登錄到一個系統,然后可以在多個相關系統中,無需重新登錄即可訪問受保護的資源。

關于“單點登錄”的實現,這里簡單說一下。一般有兩種方式:若后端處理,部署一個認證中心,這是標準做法;若前端處理,可以用LocalStorage做跨域緩存。

2.2?單設備登錄的實現

要實現單設備登錄,一般來說,有兩種方式:使用數據庫記錄登錄狀態 和?使用令牌驗證機制 。

使用令牌驗證機制?的實現步驟如下:

??用戶登錄時生成token,將賬號作為key,token作為value,并設置過期時間存入redis中。

??當用戶訪問應用時,在攔截器中解析token,獲取賬號,然后用賬號去redis中獲取相應的value。

??如果獲取到的value的token與當前用戶攜帶的token一致,則允許訪問;如果不一致,則提示前端重復登錄,讓前端清除token,并跳轉到登錄頁面。

??當用戶在另一臺設備登錄時,其token也會存入redis中,這樣就刷新了token的值和redis的過期時間。

b71b6d7a40094ce9acb7dd51bec15f3f.png

?

使用數據庫記錄登錄狀態?的實現步驟如下:

??在用戶登錄時,記錄用戶的賬號信息、登錄設備的唯一標識符(如設備ID或IP地址)以及登錄時間等信息到數據庫中的一個登錄表。

??每次用戶的登錄請求都會查詢數據庫中的登錄表,檢查是否存在該用戶的登錄記錄。如果存在記錄,則比對登錄設備的標識符和當前設備的標識符是否相同。

??如果當前設備與登錄設備不匹配,拒絕登錄并提示用戶在其他設備上已登錄。若匹配,則更新登錄時間。

??當用戶主動退出登錄或超過一定時間沒有操作時,清除該用戶的登錄記錄。

40526a2783fb4057b67b72c55ac6029d.png

?

結語

建立這個平臺的初衷:

  • 打造一個專注于前端功能問題的問答平臺,讓大家高效搜索處理同樣問題。
  • 通過不斷積累問題,一起練習邏輯思維,并順便學習相關知識點。
  • 遇到有共鳴的問題,與眾多同行朋友們一起討論,一起沉淀成長。
  • 為了給功能問題專欄添加樂趣,增設技術資訊、實用干貨兩個新專欄。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719011.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719011.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Javascript:數組的使用

目錄 一、前言 二、正文 三、結語 一、前言 為了能存儲多個數據,我們接下來介紹數組。 二、正文 數組是一種將一組數據存儲在單個變量名下的方式。 let arr[] 聲明語法: let 數組名[數據1,數據2,..數據n] 例 let names[小明,小剛,小紅,小麗] 數組是按順序保存…

【大廠AI課學習筆記NO.56】(9)模型評測

作者簡介:giszz,騰訊云人工智能從業者TCA認證,信息系統項目管理師。 博客地址:https://giszz.blog.csdn.net 聲明:本學習筆記來自騰訊云人工智能課程,疊加作者查閱的背景資料、延伸閱讀信息,及學…

Python采集學習筆記-request的get請求和post請求

使用http://httpbin.org測試,一個簡單的 HTTP 請求和響應服務。(需聯網)1.導入requests包 import requests 2.測試get請求 url http://httpbin.org/get par {key1: value1, key2: value2} # 不帶參數請求 r1 requests.get(url) # 帶參數請求 r2 requests.get(url, paramspa…

甘特圖資源視圖和任務視圖的區別

甘特圖(Gantt chart)是一種常用的項目管理工具,用于直觀地展示項目的進度和各項任務的時間安排。甘特圖包含資源視圖和任務視圖兩種視角。 一個項目的甘特圖demo : https://zz-plan.com/share/87f1340286f1343ba5 資源視圖主要顯示項目中不同資源的分配和利用情況…

植物神經功能紊亂患者,家屬應該怎么照顧!

植物神經功能紊亂181-01-317-367,通常被稱為植物人狀態,是指由嚴重腦部受損引起的意識喪失、無法自主呼吸、難以醒來或維持清醒狀態的一種嚴重健康狀況。植物神經功能紊亂患者通常面臨長期臥床、意識不清、無法言語交流等嚴重問題,需要家屬的…

代碼隨想錄算法訓練營Day 36 | LeetCode435. 無重疊區間、LeetCode763.劃分字母區間、LeetCode56. 合并區間

LeetCode435. 無重疊區間 和上題引爆氣球的邏輯非常像,只要想到左邊界排序之后,更新右邊界為最小值,則就可以輕松寫出代碼,如果按照右邊界來排序,則就可以省去取最小值的邏輯。 代碼如下:時間復雜度O(nlo…

【內推】金山辦公 2024屆 春季校園招聘

有需要內推的小伙伴嗎? 金山辦公 各崗位均有 面向應屆生春招 QQ群:723529936 內推碼:NTASYQI

海外代購系統獨立站,商品采集API接口系列

海外代購系統獨立站是一個完整的電商平臺,專為代購業務設計。這樣的系統通常具備商品采集、庫存管理、訂單處理、支付集成、物流追蹤等功能。其中,商品采集是整個系統的基礎,而API接口是實現商品采集的關鍵。 請求示例,API接口接…

使用OpenTelemetry進行監控

工具介紹 注意:該部分介紹摘抄自:搭建高級的性能監控系統(PrometheusGrafanaNode ExporterAlertmanager) - 愛云 Prometheus、Grafana、Node Exporter 和Alertmanager是一組用于監控和可視化系統性能的開源工具。它們通常一起使用,形成一個強…

滲透測試站點推薦

URL編解碼站點: http://www.esjson.com/urlEncode.html 在線URL解碼編碼工具_蛙蛙工具 (iamwawa.cn) 加解密站點: CyberChef (gchq.github.io) ASCII碼轉換: ASCII編碼轉換,ASCII碼在線查詢工具 (qqxiuzi.cn) HTML實體編碼…

一些公共方法。utils存放

一、文件下載 1.接口返回文件流 const download0 (data: Blob, fileName: string, mineType: string) > {// 創建 blobconst blob new Blob([data], { type: mineType })// 創建 href 超鏈接,點擊進行下載window.URL window.URL || window.webkitURLconst hr…

大地測量學課堂筆記:1、緒論

慕課網址:https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_ 1. 大地測量學的定義 大地測量學是專門研究精確測量…

【C++精簡版回顧】18.文件操作

1.文件操作頭文件 2.操作文件所用到的函數 1.文件io 1.頭文件 #include<fstream> 2.打開文件 &#xff08;1&#xff09;函數名 文件對象.open &#xff08;2&#xff09;函數參數 /* ios::out 可讀 ios::in 可…

使用華為云云函數functiongraph

之前使用騰訊云serverless&#xff0c;但是突然開始收費了。所以改用functiongraph 首先登陸華為云。 目錄 1.登錄華為云 2.在控制臺找到functiongraph并開通 3.添加依賴包&#xff1a; 3.1 制作依賴包 3.2引入依賴包 4.發送請求 4.1直接發送 4.1.1uri 4.1.2 請求頭…

基礎算法 - 快速排序、歸并排序、二分查找、高精度模板、離散化數據

文章目錄 前言Part 1&#xff1a;排序一、快速排序二、歸并排序 Part 2&#xff1a;二分一、二分 - 查找左邊界二、二分 - 查找右邊界 Part 3&#xff1a;高精度一、高精度加法二、高精度減法三、高精度乘法四、高精度除法 Part 4&#xff1a;離散化一、區間和 前言 由于本篇博…

“找不到msvcr90.dll無法啟動軟件如何解決

msvcr90.dll 是一個屬于 Microsoft Visual C 2008 Redistributable Package 的動態鏈接庫&#xff08;DLL&#xff09;文件。在Windows操作系統中&#xff0c;許多應用程序特別是那些使用Visual Studio 2008編譯器開發的程序&#xff0c;在運行時可能需要調用這個庫中的函數和資…

lua調用C++函數

第一步搭建lua的環境. win10 lua環境搭建-CSDN博客 我使用的環境是win10vs2015lua54 先來個最簡單的lua調用C函數, 無參數無返回值的 第一步:定義C函數. int CTest(lua_State* L) // 返回值是固定的int類型,返回0表示沒有返回參數,返回1表示有一個返回參數 {std::cout &l…

K8S高級篇:138頁經典實戰案例,圖文并茂代碼齊全,僅限3天分享

相信很多朋友都聽過云原生和容器技術&#xff0c;當然也少不了K8S的大名&#xff0c;在“容器技術革命”中&#xff0c;K8S儼然已經成為容器技術的事實標準&#xff0c;各個知名互聯網企業前仆后繼地擁抱云原生&#xff0c;爭先恐后地把容器和K8S作為戰略重心之一。 容器技術發…

HTTP頭部信息解釋分析(詳細整理)

這篇文章為大家介紹了HTTP頭部信息&#xff0c;中英文對比分析&#xff0c;還是比較全面的&#xff0c;若大家在使用過程中遇到不了解的&#xff0c;可以適當參考下 HTTP 頭部解釋 1. Accept&#xff1a;告訴WEB服務器自己接受什么介質類型&#xff0c;*/* 表示任何類型&#…

WordPress上傳圖片錯誤:不是合法的JSON響應

最近在進行WordPress遷移至新服務器的過程中&#xff0c;遭遇到一個棘手的問題&#xff0c;即在編輯文章并上傳圖片時&#xff0c;不斷遭遇“此響應不是合法的JSON響應”的錯誤。經過多次驗證和搜索&#xff0c;最終確定問題的根本原因并不在于禁用 Gutenberg 編輯器或安裝經典…