JWT有狀態登陸與無狀態登陸的區別


單點登錄與 JWT 1

  JWT 全稱: Json Web Token 。
  作用: JWT 的作用是 用戶授權(Authorization) ,而不是用戶的身份認證(Authentication)
  用戶認證 指的是使用用戶名、密碼來驗證當前用戶的身份,即用戶登錄。
  用戶授權 指用戶登錄成功后,當前用戶有足夠的權限訪問特定的資源。

傳統的 Session 登錄:

  • 用戶登錄后,服務器會保存登錄的 Session 信息
  • Session ID 會通過 cookie 傳遞給前端
  • http 請求會附帶 cookie
    這種登錄方式稱為 有狀態登錄

  有狀態登錄(Session): 傳統上,我們會使用 Session 和 Cookie 來保存用戶的授權信息。第一步,登錄過程,用戶使用用戶名和密碼來登錄系統,服務器會來驗證用戶名和密碼是否正確,如果正確,服務器會給這個用戶創建一個包含用戶登錄信息、角色、權限的一個叫做 Session 的東西,然后把這個 Session 保存起來,同時把這個 Session 的 ID 以 Cookie 的形式發送給前端,表示用戶驗證成功,登錄完成了;接下來如果用戶希望訪問某些資源,前端要向后端發起一個 HTTP 的請求,同時相應的 Cookie 也會跟隨請求一起發送給服務器,而服務器取得 Cookie 以后就會去查找是否有 Session ID ,然后通過 Session ID 提取相應的 Session 來確定用戶的身份與權限,如果 Session 與 ID 相符,同時用戶的信息也能提供相應的權限,服務器就會認為這個用戶已經登錄了,隨后資源信息就會通過 HTTP 響應給前端。
客戶端 服務器 POST api/login{email,password} 通過 cookie 傳遞 session ID 請求攜帶 cookie ,並包含 sessionID 如果用戶認證成功,則返回資源 用戶登陸 訪問資源 創建並保存 session 通過sessionID 來確定用戶 身份與權限 有狀態登陸(Session)
  無狀態登陸(JWT): 第一步,同樣是登陸,用戶使用用戶名和密碼登陸,如果登陸成功,服務器就會返回一個加密文檔,這個文檔就是 JWT ,其中包含用戶密碼以外,全部的認證信息,包括用戶名、Email、角色、權限等等,而前端在拿到 這個JWT 以后就可以把它保存起來了,可以保存到 Cookie 中,也可以保存到瀏覽器的 LocaStorage 里面,而生成的 JWT 不需要在后端保存,接下來第二步,用戶如果需要訪問某些權限的時候,這時候,用戶就要把 JWT 放在 HTTP 請求 herder 中與請求一起發送給服務器,服務器取得 JWT 以后 會使用私鑰給 JWT 文檔解密 ,如果解密成功而且數據依然有效則代表用戶已經登陸了,如果 JWT 所描述的用戶權限允許該用戶訪問資源,那么服務器就會把資源的信息,通過 HTTP 響應發回給前端。
客戶端 服務器 POST api/login{email,password} 返回 JWT 請求攜帶 JWT 如果 JWT 有效則返回資源 用戶登陸 訪問資源 使用密碼加密 JWT 使用相同的密碼驗證JWT 無狀態登陸(JWT)
  區別與差異: 傳統上用戶登陸狀態會以 Session 的形式保存在服務器上,而 Session ID 則保存在前端的 Cookie 中;而使用 JWT 以后,用戶的認證信息將會以 Token 的形式保存在前端,服務器不需要保存任何的用戶狀態,這也就是為什么 JWT 被稱為無狀態登陸的原因,無狀態登陸最大的優勢就是完美支持分布式部署,可以使用一個 Token 發送給不同的服務器,而所有的服務器都會返回同樣的結果。

JWT官網: https://jwt.io/


  1. 來源:https://blog.csdn.net/weixin_45581482/article/details/119336595?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link ↩︎


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM