sessionId詳情

猴子姐姐發表於2018-05-02
1、客戶端用cookie儲存了sessionId

客戶端用cookie儲存了sessionId,當我們請求伺服器的時候,會把這個sessionId一起發給伺服器,伺服器會到記憶體中搜尋對應的sessionId,如果找到了對應的 sessionId,說明我們處於登入狀態,有相應的許可權;如果沒有找到對應的sessionId,這說明:要麼是我們把瀏覽器關掉了(後面會說明為什 麼),要麼session超時了(沒有請求伺服器超過20分鐘),session被伺服器清除了,則伺服器會給你分配一個新的sessionId。你得重 新登入並把這個新的sessionId儲存在cookie中。
在沒有把瀏覽器關掉的時候(這個時候假如已經把sessionId儲存在cookie中了)這個sessionId會一直儲存在瀏覽器中,每次請求的時候都會把這個sessionId提交到伺服器,所以伺服器認為我們是登入的;當然,如果太長時間沒有請求伺服器,伺服器會認為我們已經所以把瀏覽器關掉了,這個時候伺服器會把該sessionId從記憶體中清除掉,這個時候如果我們再去請求伺服器,sessionId已經不存在了,所以伺服器並沒有在記憶體中找到對應的 sessionId,所以會再產生一個新的sessionId,這個時候一般我們又要再登入一次。

2、客戶端沒有用cookie儲存sessionId

這 個時候如果我們請求伺服器,因為沒有提交sessionId上來,伺服器會認為你是一個全新的請求,伺服器會給你分配一個新的sessionId,這就是 為什麼我們每次開啟一個新的瀏覽器的時候(無論之前我們有沒有登入過)都會產生一個新的sessionId(或者是會讓我們重新登入)。
當我們一旦把瀏覽器關掉後,再開啟瀏覽器再請求該頁面,它會讓我們登入,這是為什麼?我們明明已經登入了,而且還沒有超時,sessionId肯定還在服 務器上的,為什麼現在我們又要再一次登入呢?這是因為我們關掉瀏覽再請求的時候,我們提交的資訊沒有把剛才的sessionId一起提交到伺服器,所以服 務器不知道我們是同一個人,所以這時伺服器又為我們分配一個新的sessionId,打個比方:瀏覽器就好像一個要去銀行開戶的人,而伺服器就好比銀行, 這個要去銀行開戶的人這個時候顯然沒有帳號(sessionId),所以到銀行後,銀行工作人員問有沒有帳號,他說沒有,這個時候銀行就會為他開通一個帳 號。所以可以這麼說,每次開啟一個新的瀏覽器去請求的一個頁面的時候,伺服器都會認為,這是一個新的請求,他為你分配一個新的sessionId。

相關文章