雙token三驗證(Refresh Token 機制?)

單token存在的問題

????????我們都知道,token是我們在前后端數據傳輸的時候為了保證安全從而必須需要進行設置的東西,他的主要作用實際上就是為了保證我們的數據安全,進行身份驗證和授權,并且相對于session而言更加適合如今的分布式系統,但是,token本身是無狀態的,無法動態設置能不能使用,也就是說任何人獲得了當前的token就能夠利用token進行網絡攻擊,例如多臺ip設備并發攻擊當前網站等,下面列出傳統的解決方案

解決

給token設置一個過期時間,例如jwt生成的token實際上是可以設置時間的,當時間過期之后當前token就無法進行使用了,可以有效的避免因泄露造成的安全,但是,這樣就會出現一個問題,時間應當設置多少,如果設置的比較短,用戶會頻繁的登錄,如果設置的比較長,會不太安全,為了解決這個問題,我們采取【雙token三驗證】的解決方案來解決這個問題

方案原理

token有效期長不安全

????????登錄成功之后,生成兩個token,分別是access_token,和refresh_token,前者有效期可以較短,后者有效期可以較長

? ? ? ? 正常請求后端服務的時候,攜帶access_token,如果發現access_token失效,就通過refresh_token到后臺去獲取新的access_token和refresh_token,你可以理解為token的續表,

? ? ? ? 以此往復,直到refresh_token過期重新登錄即可

token的無狀態性

? ? ? ? 為了使token有狀態,也就是我們可以控制token的什么時候失效,我們可以將refresh_token設置為只能夠使用一次

? ? ? ? 那么這個時候就需要將refresh_token存儲到redis中,并且設置過期時間

? ? ? ? 當我們檢測到token異常的時候,就可以直接令refresh_token失效即可

具體流程

1.前端將用戶名和密碼給予我們的時候,我們判斷是否合理,然后生成access_token以及refresh_token即可

2.refresh_token和access_token可以都是jwt生成,但是,要注意,access_token的時間要短一下,refresh_token的時間要長一下,并且,refresh_token的有效時間并非是由jwt控制的,而是我們的redis存入的時候進行控制的,這也是為了使得token具有有效性,

3.將a_token和r_token返回前端即可

4.當登錄成功之后再次發出請求,這一次可以僅僅返回access_token也就是那個時間比較短的token,然后我們進行校驗,如果當前的access_token合理,返回響應結果即可,也就是第一次驗證

5.如果access_token不合理,那我們返回401,讓前端返回refresh_token,我們檢驗這個token是否有效,無效返回重新登錄,有效繼續,也就是第二次驗證

6.我們查詢redis中當前的refresh_token,看看是否存在和使用過,如是是,返回錯誤,不是的話就去刪除舊的token生成新的access_token和refresh_token

7.循環往復

這樣就解決了token的無狀態性帶來的問題。/

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

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

相關文章

青少年編程與數學 01-011 系統軟件簡介 22 VMware 虛擬化軟件

青少年編程與數學 01-011 系統軟件簡介 22 VMware 虛擬化軟件 一、歷史沿革(一)創立階段(1998-2003)(二)快速擴張(2004-2010)(三)云時代轉型(2011…

FPGA基礎 -- Verilog門級建模之奇偶校驗電路

? 一、什么是奇偶校驗(Parity Check) 📌 定義: 奇偶校驗是一種錯誤檢測編碼方式,用于判斷一個二進制數據在傳輸或存儲過程中是否發生了單比特錯誤。 奇校驗(Odd Parity):總共有奇…

UWB協議精讀:IEEE 802.15.4z-2020,15. HRP UWB PHY, STS, HRP-ERDEV, BPRF, HPRF,

跟UWB相關的IEEE標準主要有2個: 1,IEEE 802.15.4-2020 2,IEEE 802.15.4z-2020 IEEE Std 802.15.4z? ‐ 2020 Amendment 1: Enhanced Ultra Wideband (UWB) Physical Layers (PHYs) and Associated Ranging Techniques scrambled timestamp sequence (STS): A sequence of…

6.IK分詞器拓展詞庫

比如一些行業專業詞匯、簡單無意義詞(例如:的、得、地、是等)、網絡流行詞、后來形成的詞、再或者一些禁忌詞(比如:領導人的名字、黃賭毒犯罪等詞要排除的) 在es的插件目錄下查找配置文件: 找到IKAnalyzer…

Web3-Web3.js核心操作:Metamask、合約調用、事件訂閱全指南

Web3-Web3.js核心操作:Metamask、合約調用、事件訂閱全指南 我們做了Solidity的合約代碼,但是合約僅僅是一個后端邏輯;我們想要讓用戶來操作你的邏輯還需要做一個基本的網頁。如果要做一個基本的網頁,我們就要使用到以太坊基金發布…

四色(定理/猜想)染色算法小軟件Version1.11

四色(定理/猜想)染色算法小軟件Version1.11 2025.6.16 開發者:路人甲/打醬油 增加了【自思肯普法】 為什么加上【自思】兩字?因為我也看不明英文的PDF的四色定理證明文檔,分什么成千上百種類來證明。我就是百度下,看相關介紹&am…

【Linux驅動開發 ---- 2_深入理解內核模塊】

Linux驅動開發 ---- 2_深入理解內核模塊 目錄 Linux驅動開發 ---- 2_深入理解內核模塊學習目標時間安排建議 理論學習1. 什么是內核模塊?2. 模塊加載與卸載3. 內核模塊開發基礎 實踐任務任務1:準備開發環境任務2:編寫簡單內核模塊任務3&#…

Linux SUID提權 案例以及知識點提高分析

目錄 📚 Linux SUID 提權原理與紅隊實踐 🚀 概述 🛠? SUID 提權原理 核心機制 技術棧 🔍 案例背景:sudo -l 與 .monit 腳本 案例信息 腳本內容 🧪 提權步驟分解 📋 1. 檢查 sudo 權限…

S參數與串擾-信號完整性分析

S參數與串擾: 四端口網絡S參數中,仍表示反射,表示信號的傳輸。根據S參數的定義,和兩個參數的含義為 當只有端口1有正弦信號激勵源時,從端口3和端口4出來的正弦信號只能是互連結構內部耦合過來的,因此表示的是近端串擾…

Android OkHttp 框架超時設置詳解

OkHttp 提供了四種不同的超時設置,每種針對網絡請求的不同階段: 1. callTimeout (調用超時) 作用:控制整個調用從開始到結束的總時間,包括所有重定向和重試 默認值:0 (不超時) 場景:當你希望限制整個請求…

如何讓LLM通過反思來提升生成sql的正確率 - 以Gemini生成sql為例

什么是Agent Reflection 通常指 “智能體反思”,即讓 AI 系統通過自我反思機制優化決策或任務處理過程,類似人類通過復盤改進策略。 創建一個 SQL Agent 導入相關的庫 import openai import pandas as pd import sqlite3 from util.get_schema impor…

數字IC學習筆記(二)

數字IC學習筆記(二) 宏定義,異步FIFO, 時鐘來源,復位信號 文章目錄 數字IC學習筆記(二)1. define宏定義的使用2,異步FIFO原理3,時鐘來源4,復位參考資料 1. define宏定義的…

日志輸出功能

當程序運行出現問題時,日志記錄是一種非常有用的工具,它可以幫助我們追蹤和定位問題。在 MicroPython 中,可以使用 log 模塊來記錄程序運行中的信息。本文將介紹 log 模塊的使用方法和常見功能。 日志級別 log.DEBUG 常量,用來…

【JVM】- 類加載與字節碼結構1

類文件結構 ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[constant_pool_count-1];u2 access_flags;u2 this_class;u2 …

Android及Harmonyos實現圖片進度顯示效果

鴻蒙Harmonyos實現,使用ImageKnife自定義transform來實現圖片進度效果 import { Context } from ohos.abilityAccessCtrl; import { image } from kit.ImageKit; import { drawing } from kit.ArkGraphics2D; import { GrayScaleTransformation, PixelMapTransform…

linux 中的自動化之systemd

linux | 自動化之systemd linux 中的自動化之systemd 學習總是循序漸進的。 linux 中程序的自動化,包括早期手動啟動,查看啟動后的日志、分析啟動情況,再到后面封裝腳本(大致要求啟動后檢查是否掛了,掛了拉起,沒掛跳過…

【編譯工具】CodeRider 2.0:馭碼 CodeRider 2.0 全流程智能研發協作平臺深度技術測評報告

目錄 前言:CodeRider 2.0 簡介 (1)核心功能 (2)適用場景 (3)優勢 一、產品概述與技術架構 (1)產品定位與核心價值 (2)技術架構解析 &…

抓包 TCP 四次揮手報文

文章目錄 抓包 TCP 三次握手報文一、第一次揮手二、第二次揮手三、第三次揮手四、第四次揮手 抓包 TCP 三次握手報文 抓包 TCP 三次握手報文 一、第一次揮手 二、第二次揮手 三、第三次揮手 四、第四次揮手

KMP(Kotlin Multiplatform)發布Web版本亂碼

一、背景 最近用KMP嘗試運行在Android、iOS、desktop都成功了,網絡數據訪問也正常。 可是當運行wasmJs的時候遇到了2個較大的問題。 中文字體出現亂碼。 出現了跨域問題。 首先貼一下每個平臺的運行截圖: Android iOS Desktop 二、問題 當web跑起…

一個應用程序或移動網站項目提供最佳UI解決方案

一個應用程序或移動網站項目提供最佳UI解決方案 此套件是用大量的愛和辛勤工作制作的,為您的下一個應用程序或移動網站項目提供最佳解決方案。120個完全可編輯的界面,分為10個類別和2種文件格式,Photoshop和AI。簡單易用的結構將允許您以所…