統計登錄系統10秒內連續登錄失敗超過3次的用戶

為防止暴力破解用戶賬號的行為,在輸入賬號和密碼時一般都會限制用戶嘗試密碼輸出錯誤的次數,如果用戶多次輸錯密碼后,將在一段時間內鎖定賬號,常見的有銀行類APP、個稅App等應用,如下是用戶賬號密碼輸入錯誤的提示圖:
在這里插入圖片描述
如何實現10秒內連續登錄失敗超過3次的用戶呢有以下幾種實現方案

1、登錄日志表實現方案

每次用戶登錄的時候,無論登錄是否成功與否,我們后端都要記錄用戶的登錄信息到數據表中,如下一張簡單的登錄日志表:
在這里插入圖片描述
日志表中記錄用戶賬號、登錄的來源、登錄的ip、本次登錄是否成功以及登錄時間等基本信息。通過日志表我們就可以實現統計10秒內連續登錄失敗超過3次的用戶,如下的流程圖
在這里插入圖片描述
用戶登錄的時候,后端需要查詢日志表做統計,通過借助Mysql的一個強大的sql窗口函數row_number()來統計連續的10秒內是否存在超過3次的登錄失敗的情況:

(1)如果存在連續10秒超過3次登錄失敗,就需要鎖定用戶的賬號并發送一個郵件通知用戶。(2)如果不存在連續10秒超過3次登錄失敗的情況,返回用戶的登錄情況(賬號密碼輸入正確,返回登錄成功的響應,賬號密碼輸入錯誤,就返回登錄失敗的提示)。使用日志表實現統計連續10秒超過3次登錄失敗的用戶方案中存在如下的問題:(a)統計在10秒之內用戶超過3次登錄失敗的用戶登錄數據,需要使用row_number()窗口函數,一方面統計的sql語句比較復雜,另一方面sql執行的效率也不高。(b)記錄用戶的登錄日志,隨著時間的推移數據量會越來越大,這樣會影響性能,后續需要做冷數據的遷移,將指定時間(如1個月前)的用戶登錄數據遷移到冷表中。

2、Redis實現方案

借助Redis實現統計在10秒之內用戶超過3次登錄失敗的流程圖如下所示:
在這里插入圖片描述
Redis中以用戶id為key(如123_login_record),連續登錄失敗次數為value,并且設置key的過期時間為10秒。

  用戶請求登錄時候,服務端檢測當前用戶輸入的賬號密碼是否正確:(a)如果用戶賬號密碼驗證通過(登錄成功),此時需要將這個用戶Redis中的key刪除,目的是用來實現記錄連續失敗的功能。(2)如果用戶登錄失敗,那么需要使用setnx命令來設置用戶登錄失敗的信息,并且Redis的key過期時間為10秒,這個過程中如果set失敗代表用戶之前已經登錄失敗過,直接把次數加1就可以了。最后我們只需拿到這個用戶賬號對應的value,判斷這個value是否大于等于3,如果大于等3次,那么需要發送登錄異常的提示郵件,鎖定用戶賬號一段時間。

總結:

(1)完成統計10秒內連續登錄失敗超過3次的用戶,可以借助登錄日志表實現,也可以借助Redis實現方案。(2)登錄日志表實現方案中是借助sql窗口函數row_number()來統計,這種實現方式不但統計的sql復雜,而且隨著登錄日志表中數據量的增加,sql的執行效率也很低。(3)Redis實現方案key加過期時間來實現,如果用戶登錄成功就刪除這個key,登錄失敗就在原先登錄失敗的基礎上加1。但為了保證Redis中多個指令執行過程中的原子性,可以借助lua腳本來保證原子性。

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

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

相關文章

vue3通過render函數實現一個菜單下拉框

背景說明 鼠標移動到產品服務上時,出現標紅的下拉框。 使用純css的方案實現最簡單,但是沒什么技術含量,棄之;使用第三方組件庫,樣式定制麻煩棄之。因此,我們使用vue3直接在頁面創建一個dom作為下拉框吧。…

二、重學C++—C語言核心

上一章節: 一、重學C—C語言基礎-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/146002496?spm1001.2014.3001.5502 本章節代碼: cPart2 CuiQingCheng/cppstudy - 碼云 - 開源中國https://gitee.com/cuiqingcheng/cppstudy/tree/…

2-003:MySQL 三層 B+ 樹能存多少數據?

1. 計算 B 樹能存儲多少數據 參數設定 每個數據頁(Page)大小:16KB(16384 字節)每個索引節點存儲的子節點數量: 索引項大小: 假設 bigint(主鍵)占 8 字節每個索引項存儲…

幾種常見的虛擬環境工具(Virtualenv、Conda、System Interpreter、Pipenv、Poetry)的區別和特點總結

在 PyCharm 中創建虛擬環境是一個非常直接的過程,可以幫助你管理項目依賴,確保不同項目之間的依賴不會沖突。 通過 PyCharm 創建虛擬環境 打開 PyCharm 并選擇或創建一個項目。 打開項目設置: 在 Windows/Linux 上,可以通過點擊…

Windows系統編程項目(四)窗口管理器

本章我們講解基于對話框的MFC窗口相關的操作 該管理器要實現以下功能 初始化列表 初始化列表表頭 初始化圖像列表 初始化列表 功能實現 加載菜單 刷新列表 結束進程 隱藏窗口 最大化窗口 最小化窗口 手搓窗口管理器 // CWindowManage.cpp: 實現文件 //#include "pch.h&…

優化 NFS 掛載參數以提升可靠性與容錯性

在現代 IT 基礎設施中,NFS(網絡文件系統)被廣泛用于共享文件和存儲。雖然 NFS 提供了便利,但在某些情況下,掛載失敗或網絡問題可能導致掛載操作不穩定。為了提高掛載的可靠性和容錯性,我們可以通過優化 NFS…

JavaScript事件循環機制

JavaScript 事件循環機制(Event Loop)詳解 JavaScript 是 單線程、非阻塞 語言,依賴 事件循環(Event Loop) 來實現異步編程。它的執行模型包括 調用棧(Call Stack)、任務隊列(Task …

大模型架構記錄4-文檔切分 (chunks構建)

chunks: 塊 trunks : 樹干 “RAG”通常指 檢索增強生成(Retrieval-Augmented Generation) 主要框架:用戶提query,找到和它相關的,先把問題轉換為向量,和向量數據庫的數據做比較,檢…

物聯網IoT系列之MQTT協議基礎知識

文章目錄 物聯網IoT系列之MQTT協議基礎知識物聯網IoT是什么?什么是MQTT?為什么說MQTT是適用于物聯網的協議?MQTT工作原理核心組件核心機制 MQTT工作流程1. 建立連接2. 發布和訂閱3. 消息確認4. 斷開連接 MQTT工作流程圖MQTT在物聯網中的應用 …

第27周JavaSpringboot電商進階開發 1.企業級用戶驗證

課程筆記:注冊郵箱驗證 一、概述 從本小節開始,將學習如何進行注冊郵箱驗證。主要任務是給項目配置一個公共郵箱(可自己注冊或由公司提供),用于向用戶發送驗證碼,幫助用戶完成注冊流程。課程中以QQ郵箱為…

數據庫---sqlite3

數據庫: 數據庫文件與普通文件區別: 1.普通文件對數據管理(增刪改查)效率低 2.數據庫對數據管理效率高,使用方便 常用數據庫: 1.關系型數據庫: 將復雜的數據結構簡化為二維表格形式 大型:Oracle、DB2 中型:MySql、SQLServer …

音視頻軟件工程師面試題

一、基礎知識 編解碼相關 H.264 和 H.265(HEVC)的主要區別是什么?視頻編解碼的基本流程是什么?關鍵技術有哪些?音頻編解碼(如 AAC、MP3、Opus)的區別和應用場景?什么是 B 幀、P 幀、I 幀?它們的作用是什么? 流媒體協議RTMP、HTTP-FLV、HLS、WebRTC 的區別和應用場景…

【系統架構設計師】測試方法

目錄 1. 說明2. 靜態測試3. 動態測試4. 黑盒測試5. 白盒測試6. 灰盒測試7. 自動化測試8.例題8.1 例題1 1. 說明 1.軟件測試方法的分類有很多種,以測試過程中程序執行狀態為依據可分為靜態測試(Static Testing,ST)和動態測試&…

tomcat配置應用----server.xml文件具體配置

1.tomcat項目目錄 默認項目目錄:tomcat安裝目錄/webapps目錄 如上圖所示,在tomcat的項目目錄下有很多子文件夾,這些子文件夾中都有一個項目首頁。 如上圖所示,將來我們去使用IP加端口號的方式去訪問tomcat的時候,默認是…

Spring Boot 調用DeepSeek API的詳細教程

目錄 前置準備步驟1:創建Spring Boot項目步驟2:配置API參數步驟3:創建請求/響應DTO步驟4:實現API客戶端步驟5:創建控制器步驟6:異常處理步驟7:測試驗證單元測試示例Postman測試請求 常見問題排查…

多維數據聚合方案:SQL GROUPING SETS深度解析

一、什么是GROUPING SETS? GROUPING SETS是SQL標準中的多維聚合運算符,允許在單個查詢中實現多維度組合的分組統計。相較于傳統UNION ALL方案,性能可提升3-10倍(TPC-DS基準測試)。 二、核心語法解析 SELECT column1,…

Excel中國式排名,3種方法!

大家好,我是小魚。 什么是中國式排名呢? 舉個例子比如說公司一共有10名員工進行成績考核,如果9個人考核成績都是90分,你是89分,按照國際慣用的排名法則:9 個人考核成績并列第一,你第10名&…

哪些業務場景更適合用MongoDB?何時比MySQL/PostgreSQL好用?

哪些業務場景更適合用MongoDB?何時比MySQL/PostgreSQL好用? 就像淘寶的個性化推薦需要靈活調整商品標簽,MongoDB這種"變形金剛"式的數據庫,在處理以下三類中國特色業務場景時更具優勢: 一、動態數據就像&q…

深度解讀:OpenAI發布GPT-5的技術突破與商業影響

引言 2025年2月,OpenAI正式發布GPT-5,這一被譽為“AI新紀元開篇之作”的模型,不僅實現了技術架構的顛覆性創新,更以免費開放策略引發行業地震。本文將從技術突破、商業影響、行業競爭格局及未來挑戰四個維度,全面解析…