http本身無狀態,說白了就是不保存任何用戶信息。 所以引入cookie(客戶端方案)、session(服務端方案)來保存用戶信息:
這些信息通常包括什么,不能包括什么呢?
: 1. 身份信息、登陸狀態 2. 用戶的個性配置、權限列表 3. 其他的一些通用數據(比如購物車)4 登錄憑證, 權限 ?
: session不適合保存比較多的信息,防止服務端壓力過大。
: 一般只存ID
: 密碼不宜放進session。 private transient String password; 且分布式項目的緣故。
session相關信息:
1 失效只能是超時或者invalidate(); 關閉瀏覽器不會刪除服務端的session,但是可能會刪除cookie保存 的sessionId。
2 session實現的‘記住我’並不安全。https://coolshell.cn/articles/5353.html。 記住我相當於自動查數據庫。
至於token為什么比sessionId安全,CSRF攻擊的方式:被騙去點了個鏈接,被惡意的JS提交的等
3 一般都是用redis模擬session。