<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網易首頁 > 網易號 > 正文 申請入駐

      JWT被吹了10年"無狀態", logout功能讓我偷偷加了Re

      0
      分享至

      2015年JWT(JSON Web Token,一種用于身份驗證的令牌格式)剛火起來的時候,技術圈有個說法像咒語一樣被重復:服務器不用存任何東西,驗證簽名就夠了。這個承諾太美了——水平擴展時不用操心會話同步,微服務之間不用共享數據庫,甚至能省掉一整層緩存。

      我信了。AuthShield的前兩個版本完全按這個思路設計:簽發令牌、丟掉私鑰、讓下游服務自己驗簽。直到產品經理在需求文檔里寫了兩個字:「退出登錄」。

      那一刻我發現,JWT的"無狀態"是個有條件的真理——它只在用戶不主動退出時成立。

      退出登錄的物理悖論

      JWT的本質是一段帶簽名的JSON。服務器生成它,客戶端保存它,之后每次請求原樣帶回。服務器驗簽通過就放行,整個過程不需要查數據庫。這個設計有個隱含假設:令牌的生命周期完全由過期時間控制,用戶不會提前"殺死"它。

      但用戶確實會退出。而且用戶合理期待:點了退出,賬號就該立刻鎖死,哪怕令牌還有59分鐘才過期。

      我最初想的方案很天真:把令牌過期時間設短一點,比如5分鐘。但這樣用戶每5分鐘就要重新登錄,體驗災難。OAuth 2.0的解法是把令牌拆成兩個——訪問令牌(Access Token,短期有效)和刷新令牌(Refresh Token,長期有效)。訪問令牌過期后用刷新令牌換新的,既保證安全又減少登錄頻次。

      這個方案解決了"頻繁登錄"問題,但沒解決"即時失效"問題。刷新令牌本身也是JWT,如果它被偷了,攻擊者能在用戶退出后繼續刷新訪問令牌,直到刷新令牌自己過期——這可能是一周、一個月,甚至永遠不過期。

      Redis黑名單:給無狀態架構打補丁

      我最終在AuthShield里加了一層Redis。邏輯很簡單:用戶退出時,把當前訪問令牌的唯一標識(jti,JWT ID)寫進Redis,設置過期時間為令牌的剩余有效期。每次請求來時,先查Redis——如果在黑名單里,直接拒絕。

      這行代碼寫進去的時候,我盯著屏幕發了會兒呆。說好的無狀態呢?現在每個請求都要走一趟網絡IO,Redis掛了全站認證崩,多區域部署還要考慮緩存同步。

      但產品經理的需求是合理的。安全團隊的要求是合理的。用戶期待自己的退出操作能立刻生效,這更是合理的。唯一不合理的是早期JWT宣傳里那個被過度簡化的"無狀態"神話。

      Redis黑名單的方案有個明顯代價:查詢延遲。我測過,本地Redis平均1-2毫秒,跨可用區能到10毫秒以上。對于AuthShield的定位(獨立認證微服務,下游可能幾十個服務調用),這個開銷可以接受。但如果是極高并發的場景,可能需要把黑名單緩存到應用內存,或者用布隆過濾器減少Redis查詢次數。

      刷新令牌的旋轉與 reuse 檢測

      黑名單只解決了訪問令牌的即時失效。刷新令牌更麻煩——它生命周期長,被偷的后果更嚴重。我的最終方案是"刷新令牌旋轉"(Refresh Token Rotation):每次用刷新令牌換取新的訪問令牌時,同時頒發新的刷新令牌,舊的那個立即作廢。

      這個設計有個邊緣情況:如果用戶在兩個設備上同時操作,或者網絡延遲導致舊刷新令牌被重發,新令牌已經生成,舊令牌卻還在路上。這時候需要"重用檢測"(Reuse Detection)——如果服務器收到一個已經作廢的刷新令牌,說明它被偷了,立即吊銷該用戶所有刷新令牌,強制重新登錄。

      實現這個邏輯時,我意識到刷新令牌必須是有狀態的。每個刷新令牌需要記錄:用戶ID、設備指紋、簽發時間、是否已旋轉、旋轉后的新令牌ID。這些信息存在PostgreSQL里,和JWT的"無狀態"承諾徹底告別。

      但這也是個務實的妥協。完全無狀態的認證只存在于演示代碼里。生產環境要處理設備管理、異常檢測、用戶強制下線、安全事件響應——這些都需要服務器記住點什么。

      AuthShield的最終架構

      現在的AuthShield有三層狀態:Redis存短期黑名單(訪問令牌),PostgreSQL存長期令牌元數據(刷新令牌),內存緩存熱點黑名單減少Redis壓力。訪問令牌有效期15分鐘,刷新令牌7天,支持配置。

      這個架構和2015年那批JWT布道者描述的"服務器無狀態"已經相去甚遠。但它是誠實的——誠實地承認退出登錄是個狀態變更操作,誠實地承認安全需要可撤銷性,誠實地承認用戶控制權比架構純度更重要。

      我后來查資料,發現Auth0、Firebase Auth、AWS Cognito這些主流服務都在用類似的混合方案。JWT的無狀態特性被保留在"驗證階段"(任何服務能獨立驗簽),但"生命周期管理"階段引入了狀態層。這不是設計失敗,是問題域本身的復雜度決定的。

      如果你正在設計認證系統,我的建議是:先問清楚產品需求里有沒有"退出登錄"和"踢掉某設備"。如果有,直接規劃狀態層,別在"純無狀態"的幻覺里浪費時間。Redis、數據庫、或者專門的令牌管理服務,選一個你能運維的。

      JWT仍然是個好工具,但它的賣點需要重新理解——不是"服務器不用存任何東西",而是"驗證時不用存任何東西"。這兩個詞的區別,值一個周末的重構。

      你們團隊的退出登錄是怎么實現的?黑名單查Redis還是數據庫,還是干脆不管了等令牌過期?

      特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

      Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

      相關推薦
      熱點推薦
      突發!伊朗大規模導彈襲擊,全球市場應聲跳水

      突發!伊朗大規模導彈襲擊,全球市場應聲跳水

      魏家東
      2026-04-07 14:12:21
      “還真把自己當盤菜了”,北京職高女被全網嘲笑,含金量0人買單

      “還真把自己當盤菜了”,北京職高女被全網嘲笑,含金量0人買單

      朗威談星座
      2026-04-07 16:58:24
      我的媽呀!梁靜茹怎么會變成這樣?好像那藝娜啊!

      我的媽呀!梁靜茹怎么會變成這樣?好像那藝娜啊!

      動物奇奇怪怪
      2026-04-07 16:40:51
      決定中國國運時刻馬上就到來,撐過去就是勝利,但是警惕內鬼破壞

      決定中國國運時刻馬上就到來,撐過去就是勝利,但是警惕內鬼破壞

      誮惜顏a
      2026-04-07 16:57:55
      80年紀登奎主動辭去職務后,鄧小平找他談話:再繼續做一些工作吧

      80年紀登奎主動辭去職務后,鄧小平找他談話:再繼續做一些工作吧

      海佑講史
      2026-04-07 17:45:04
      特朗普1歲混血外孫,首次公開亮相,蒂芙尼越發高調伊萬卡卻缺席

      特朗普1歲混血外孫,首次公開亮相,蒂芙尼越發高調伊萬卡卻缺席

      譯言
      2026-04-07 08:39:57
      6連勝也挨罵!烏度卡怒吼申京滾回去,火箭更衣室要炸

      6連勝也挨罵!烏度卡怒吼申京滾回去,火箭更衣室要炸

      阿晞體育
      2026-04-07 14:04:46
      特朗普已做好開戰準備?王毅曾警告:中美一旦沖突,結局只有一個

      特朗普已做好開戰準備?王毅曾警告:中美一旦沖突,結局只有一個

      聚焦真實瞬間
      2026-04-07 03:50:09
      我發現很多不幸福的家庭,是因兒子沒養家能力,還幫他結婚造成的

      我發現很多不幸福的家庭,是因兒子沒養家能力,還幫他結婚造成的

      小馬達情感故事
      2026-04-06 18:55:08
      為什么現在打籃球的人越來越少了?網友:社會碎片化后必然的結果

      為什么現在打籃球的人越來越少了?網友:社會碎片化后必然的結果

      另子維愛讀史
      2026-04-06 22:31:50
      我們并沒有用40年走完發達國家200年的路

      我們并沒有用40年走完發達國家200年的路

      文青大叔說
      2026-03-13 08:13:38
      美軍上校說了大實話,派B2深入中國核心區,就像派出老頭樂

      美軍上校說了大實話,派B2深入中國核心區,就像派出老頭樂

      蕭栝記錄風土人情
      2026-04-07 11:27:20
      CBA常規賽4月8日6場焦點戰:青島PK殘陣廣東,CCTV5播廣廈PK山東

      CBA常規賽4月8日6場焦點戰:青島PK殘陣廣東,CCTV5播廣廈PK山東

      薇說體育
      2026-04-07 15:54:57
      他已任安徽一縣副縣長!

      他已任安徽一縣副縣長!

      鳳凰網安徽
      2026-04-07 16:41:37
      張雪峰遺產繼承浮出水面:幾億留給女兒,讓全網父母破防不是錢…

      張雪峰遺產繼承浮出水面:幾億留給女兒,讓全網父母破防不是錢…

      華人星光
      2026-03-29 12:22:37
      新冠后遺癥對人體的最大影響,很多人深受其害,有些人還不自知

      新冠后遺癥對人體的最大影響,很多人深受其害,有些人還不自知

      呼吸科大夫胡洋
      2026-02-22 11:39:12
      馬杜羅被捕后暴瘦13公斤

      馬杜羅被捕后暴瘦13公斤

      烽火觀天下
      2026-04-07 12:34:13
      博主自稱在韓國讀漢語言文學博士,畢業半年找不到工作,網友:太抽象了

      博主自稱在韓國讀漢語言文學博士,畢業半年找不到工作,網友:太抽象了

      可達鴨面面觀
      2026-04-07 13:02:01
      就在所有人以為,大戰即將結束的時候,伊朗突然打出了最猛導彈雨

      就在所有人以為,大戰即將結束的時候,伊朗突然打出了最猛導彈雨

      何氽簡史
      2026-04-07 17:55:43
      世界名畫:日本男乒全隊冷漠死死盯著王楚欽慶祝 張本智和呆若木雞

      世界名畫:日本男乒全隊冷漠死死盯著王楚欽慶祝 張本智和呆若木雞

      風過鄉
      2026-04-07 07:01:02
      2026-04-07 19:07:00
      摸魚算法
      摸魚算法
      致力于用最前沿的AI技術,換取更多發呆時間的三十歲青年。
      851文章數 9關注度
      往期回顧 全部

      科技要聞

      滿嘴謊言!OpenAI奧特曼黑料大起底

      頭條要聞

      英媒:伊朗最高領袖病重昏迷 無法參與任何國家決策

      頭條要聞

      英媒:伊朗最高領袖病重昏迷 無法參與任何國家決策

      體育要聞

      官宣簽約“AI球員”,這支球隊被罵慘了...

      娛樂要聞

      女首富陳麗華離世 被曝生前已分好遺產

      財經要聞

      10萬億財政轉移支付,被誰拿走了?

      汽車要聞

      不止是大 極狐首款MPV問道V9靜態體驗

      態度原創

      藝術
      親子
      旅游
      健康
      家居

      藝術要聞

      美麗風光看不盡

      親子要聞

      媽媽們,犯錯不可怕,可怕的是你對自我的評判、打壓!

      旅游要聞

      2026年清明節假期國內出游1.35億人次

      干細胞抗衰4大誤區,90%的人都中招

      家居要聞

      雅致愜意 感知生活之美

      無障礙瀏覽 進入關懷版