單點登錄與許可權管理本質:session和cookie介紹
本篇開始寫「單點登錄與許可權管理」系列的第一部分:單點登錄與許可權管理本質,這部分主要介紹相關的知識概念、抽象的處理過程、常見的實現框架。通過這部分的介紹,能夠對單點登錄與許可權管理有整體上的了解,對其相關概念、處理流程、常見實現有個基本的認識。
本篇文章介紹下session和cookie,它是登錄實現的基礎,主要從下面幾個方面介紹:
session和cookie基本概念
session的生命周期
cookie的作用域
cookie的跨域問題會在後續文章單獨介紹。
基本概念
大部分系統都需要識別用戶的身份,有些功能只有特定的用戶能使用,有些功能需要根據用戶身份顯示不同的內容,一般使用唯一編號標識用戶的身份。
就像我們的身份證,身份證號是每個人唯一的,根據所在的省市區、出生年月、性別等規則生成,我們去政府機構辦事時,都需要帶著身份證,他們通過身份證驗證我們的身份。
session和cookie主要用來識別登錄者身份的,默認通過JSESSIONID唯一編號進行驗證。session是在服務端保存的一個數據結構,用來跟蹤用戶的狀態,也可以保存用戶相關的一些數據,可以保存在內存、緩存、資料庫等存儲結構中。cookie是客戶端保存用戶信息的一種機制。
servlet session
HttpSession:實際的session介面定義;
session相關的介面,一般由應用伺服器來實現,比如Tomcat、Resin、Jetty。Session的主要特徵:
在tomcat中,HttpSession的實現是StandardSession,同時StandardSession會實現自定義的Session介面,它是對HttpSesion一個包裝。
另外,tomcat會實現session的管理和持久化,可隨時獲取到對應的session,具體實現不在本篇分析,網上有很多文章介紹。
cookie
cookie是客戶端的解決方案,是伺服器發給客戶端的特殊信息,這些信息以文本文件的方式存放在客戶端,後續請求,客戶端都會帶上這些特殊的信息。
服務端通過HTTPResponse設置cookie到響應頭,發送到客戶端,後續客戶端自動將cookie信息設置到請求頭。下面是我登錄百度後的cookie信息:
cookie也有失效時間,可通過cookie.setMaxAge(expiry)進行設置:
另外還有其他幾個特性:
TAG:情情分享平台 |