2014-01-29 65 views
3

如何防止我的用戶在兩臺設備上同時登錄系統?因此,如果用戶從計算機登錄,當他從不同的計算機登錄時,首先會話自動關閉(不需要實時)。Node.js每個用戶一個會話

我使用node.js,express.js,mongoose,passport,connect-mongo(將會話存儲在數據庫中)。

回答

5

您可以在用戶登錄時生成令牌,並將其保存在數據庫中,以防止該用戶。現在,每個請求都需要將此令牌發送到服務器。考慮以下情況:

用戶A從計算機A登錄並生成令牌123並將其保存在數據庫中。現在,無論用戶A向服務器發送請求,它都會首先檢查有效會話,然後從數據庫加載用戶令牌以檢查其有效性。

現在用戶A從計算機B登錄到網站,令牌456被分配給用戶並被覆蓋在數據庫中。下一次,當用戶A從計算機A發送請求時,服務器檢查有效會話,並且當它從數據庫獲取令牌時,會出現不匹配,表明用戶已從其他地方登錄,因此當前會話無效。