2016-10-19 34 views
1

我正在研究一個非常簡單的Node.js服務器。用戶通過普通的用戶名/密碼錶單進行身份驗證,服務器 - 檢查數據庫後 - 授予或拒絕訪問其他頁面。Node.js:照顧多個會話

爲了跟蹤每個用戶在做什麼,我將生成一個UUID以便在登錄時發送。當客戶端向服務器詢問或發送任何內容時,它將包含此UUID,以便服務器知道誰是用戶。

的問題是關於這些的UUID的生命週期:

  • 時,我必須從我的本地數組中刪除一個UUID?即當用戶「斷開連接」時,我想如果它明確地註銷或在不活動超時之後。如果他將自己的智能手機暫時擱置一下,我不想斷開連接。

  • 如果用戶在他的會話還活着時重新加載頁面,我想避免新的登錄:我需要一種方法來了解連接來自同一用戶。你會如何實現這一目標?

回答

2

我會做的是使用智威湯遜。我會要求用戶使用用戶名和密碼進行登錄,然後向他們發放一個JWT,其中載有包含用戶標識符(用戶名或ID)的有效載荷,並且設置有效期限表示允許的最長不活動時間(取決於您的業務邏輯),例如5小時。我還可以包含上次註銷日期等。

現在,用戶在向您的服務發出請求時,會在其標題中發送此JWT,您可以解碼該令牌並檢查用戶是否註銷(令牌最後註銷時間小於用戶註銷時間)。

您可以跟蹤各種事情。

也可能有其他方式,使用會話。

+0

這是我的想法,但我不知道智威湯遜!所以,所有的邏輯都在服務器端應用程序上(好的,客戶端應該發回JWT)。 – Mark

+0

是的,客戶端向每個請求發送JWT。 –