簡體   English   中英

用於微服務的 HttpSession

[英]HttpSession for microservices

我知道基於令牌的身份驗證廣泛用於微服務,尤其是在水平擴展時。

對於微服務,我們可以通過將會話存儲在數據庫中來使用會話嗎? 這一系列請求將是:

  • 第一個請求,HTTPsession 被創建,並且 session id 與唯一的用戶名一起存儲在數據庫表中。
  • 第二個請求是用這個 session id 發送的,任何微服務實例都可以服務這個請求。 服務器必須使用數據庫記錄驗證此 session 和用戶。 如果數據庫中存在 sesssionid+username 組合並且 sessionid 是有效的組合,則提供請求,否則重定向到登錄頁面。
  • 單擊注銷時,session 將失效,同時刪除 db 記錄。

這對於微服務來說不是一個很好的 session 管理嗎? 微服務總是必須是無狀態的嗎?

基於令牌的身份驗證用於微服務的原因是為了避免在服務之間共享 session state。

如果您特別參考 javax.servlet.http.HttpSession object 的實現,這通常是一個服務器(服務)本地的,如果可能的話,它需要一些自定義代碼來根據 Z21D6F40CFB511982E4424E0 提供的 Z21D6F40CFB511982E4424E0 重新加載它,您的特定運行時(不知道您使用的是什么軟件)。

我不明白為什么你的建議不可能,但我會仔細考慮這是否是絕對要求。 可能還有其他更簡單的方法來實現您想要的。

一種方法是在登錄時發出一個令牌(想到 JWT ),讓其他服務簡單地驗證這個令牌並從中提取用戶數據。 這樣,首次登錄后無需查找用戶數據進行身份驗證。

如果共享 state 是您需要的,我建議您找一些現有的軟件來處理 session 存儲。 我看到例如 Redis 有一個 session 管理的解決方案。

您也可以查看此問題的答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM