回覆列表
  • 1 # OMG未來

    這要看前端cookies是怎麼對使用者ID進行加密的。後端session只是給前端賬號分配了一個唯一標識,用於區分不同的使用者,但到底是哪個使用者,並沒有建立關聯。建議的做法是前端生成cookies的時候,把cookies資訊傳送給後端,然後擷取session的ID一起存到資料庫作為一條記錄。這樣想知道什麼時候張三還是李四登入,只需按照cookies生成的演算法逆運算得到賬號ID就行了。

  • 2 # 網路圈

    首先需要說明的是,網站是無法根據Session來判斷使用者是張三還是李四的!因為Session只是伺服器端的一種會話儲存機制,而會話辨別不能單靠Session來實現,而應該是根據Cookie中的SessionID來辨別會話。

    什麼是Web會話?

    Web會話狀態指的是瀏覽器與伺服器端在通訊過程中的狀態資訊,藉助會話狀態,伺服器端可以辨別哪些請求是來自於同一個客戶端的。

    這裡要科普一下,我們訪問網站是需要透過協議來訪問的,目前Web訪問主要是靠HTTP協議或HTTPS協議來實現。HTTP協議本身是無狀態的,而HTTPS是在HTTP的基礎上加了SSL層以保證資料是加密傳輸的,所以哪怕是同一個使用者(瀏覽器)向伺服器發出多次請求,伺服器端也是無法辨別這些請求是否來自於同一個使用者(瀏覽器)。

    如何保持Web會話狀態?

    既然HTTP協議本身不具備會話狀態功能,那為了解決會話狀態保持的問題,就有了Cookie和Session機制。

    Cookie和Session是相互配合使用的,整體流程如下:

    1、使用者第一次訪問Web伺服器時,伺服器端會生成一個會話,並將會話的唯一識別符號(SessionID)作為響應資料種植到客戶端瀏覽器的Cookie中;

    2、此使用者(瀏覽器)後續請求都會將本地的Cookie作為請求頭髮送至伺服器端;

    3、伺服器端獲取到客戶端傳來的Cookie並解析出SessionID,然後憑此SessionID去伺服器中找到與之對應的Session。

    通俗的說,我們可以把Session當成一個客戶資料保險櫃,這個資料是機密的所以放在伺服器端;而對應的保險櫃鑰匙(SessionID)是發放給客戶手裡的(瀏覽器)。客戶想開啟保險櫃取出裡面的資料就必須提供合法的鑰匙,如果鑰匙合法就能開啟保險櫃,反之伺服器端無法識別鑰匙也就無法開啟保險櫃。

    所以說,會話狀態的辨別主要是依靠客戶端Cookie中的SessionID的,而不是伺服器端的Session,伺服器端的Session只是用來儲存資料的。

  • 中秋節和大豐收的關聯?
  • 有哪一瞬間覺得一個人可憐又可憎?