一、區別和聯系
對於他們之間的區別以及聯系,本篇博文僅做一下總結,具體可以看看這篇博客:徹底理解 Cookie、Session、Token
Token 與 Session 都是用來標識客戶端的一種方式,他們都可以保存用戶信息,都可以用來識別用戶。
但是他們的主要區別是:前者是客戶端保存用戶信息,后者是服務端保存用戶信息。
使用 Token 時,當用戶登錄成功后,服務端返回一條帶有用戶信息的加密字符串(Base64)給客戶端保存。
使用 Session時,當用戶登錄成功后,服務端保存用戶信息,並返回一條唯一標識該用戶信息的字符串。
他們以后訪問服務器時,就將請求加上 token 或者 sessionId 發送給服務器,服務器用此來區分客戶端。
正如上面所述,但用戶非常多時,使用 Session 的話服務器將會消耗大量內存,增加服務器負荷。
Cookie 和 LocalStorage 都是瀏覽器用來存儲數據的,比如上面的 token 或者 sessionId,不過 LocalStorage 存儲空間更大。
他們之間的區別可以看看這篇博文:淺談瀏覽器存儲(Cookie、LocalStorage)
最后說一下關於Session和Token的使用:
二、Token的使用
Java 有許多JWT庫的實現,它們之間各有優缺點,可以看看這篇:各JWT庫的對比
如果使用其中一種集成到SpringSecurity中,可以看看這篇:JWT和SpringSecurity集成