SessionID.cookie,Session傻傻分不清楚??

SessionID.cookie,Session傻傻分不清楚??

Http協議是無狀態協議,他是一個 請求->處理->回應 模型

所以每次請求都不會紀錄上次執行的動作,
如果這這樣我們如何執行判斷使用者是否經在我們系統登入了

Cookie vs Session

         

  儲存位置  
Cookie   Client side  
Session   Server side (通常放在Server記憶體或DB)  

          

每次Http請求都會協帶此網域所屬的Cookie資料,帶到Server那邊


Server如何區別每個人的Session資料呢?

那是因為有一個cookie裡會有一個SessionId來當此使用者的識別

瀏覽器在第一次請求網站時,沒有SessionId的cookie,伺服器就會幫我們產生一個新的

這個就可以想成是我們的置物櫃鑰匙,瀏覽器在下次請求時會將此cookie一併傳到伺服器端

伺服器會判斷是否有此SessionId如果有我們就可以使用Session裡的東西了



舉例:

在說明實現之前,我來說個生活化的東西幫助大家記憶

大家在買飲料的時候,我們付完錢後店員會給我們一個號碼牌

我們要拿飲料時就可以依據此號碼牌

上面的過程很類似Http過程
付完錢後店員不會記得你是誰,店員會給你一個號碼牌來當取飲料的依據

在登入帳號時你選上記住密碼在伺服器端檢查執行:

* 帳號的正確性
* 判斷是否是否記住密碼,有選擇記住密碼Server會跟瀏覽器說要寫入cookie內容就是可以識別此會員的資訊

下次再訪問網站的時候伺服器就可以依據此cookie來判定是否已經登入

注意:cookie存在客戶端 不要存放一些敏感資料,而且存放前要加密


【C#】我們來土砲一個 Asp.net Session (Session核心原理)


參考網址:

https://cnodejs.org/topic/550164ba73263b0e4eef9a81

http://fred-zone.blogspot.tw/2014/01/web-session.html


如果本文對您幫助很大,可街口支付斗內鼓勵石頭^^