2011-03-27 125 views
0

注意:這個問題是關於在哪裏存儲登錄嘗試和當前登錄狀態在哪裏存儲登錄嘗試和當前登錄狀態,Cookie或會話?

我正在構建一個Web應用程序,用戶將被要求註冊以獲取身份驗證詳細信息,以便在登錄系統時使用該身份驗證信息,但我是一名安全的新手。

而且我希望用戶每個會話只能登錄一次,因此用戶不能有多個現有的成功身份驗證,即無法同時從計算機a和計算機b登錄,或者已經成功進行身份驗證存在相同的用戶或未被註銷。

我想我需要跟蹤用戶的位置,登錄嘗試和當前登錄狀態;以便相應採取行動。 我正在尋求關於在cookies和會話之間使用什麼的建議,如何跟蹤用戶的位置以及更多建議。

預先感謝您。

+2

在大多數情況下,Cookie會存儲您的會話ID。似乎有點愚蠢的區別。 – 2011-03-27 06:22:39

回答

0

cookies與會話之間的主要區別是cookie存儲在用戶的瀏覽器中,而會話不是。這種差異決定了每種產品最適合用於哪種。

一個應該去餅乾來存儲我們想知道什麼時候用戶在將來返回到網頁(例如,記住我在這臺計算機上的登錄頁面上的複選框使用cookie記住用戶,當他回報)。
會話應該用於記憶該特定瀏覽器會話的某些內容(例如用戶名,以顯示在每個頁面上或需要的地方)。

良好讀取:

+0

好的。所以簡單來說,如果我想在我的登錄表單中包含記住我的複選框,我將不得不爲任何人設置一個cookie,檢查並且他們沒有註銷,或者是否仍然存儲細節,即使有人擊中註銷按鈕? – 2011-03-27 15:33:46

2

這些無。
您必須使用數據庫來完成您的需求。
您必須將當前會話ID,登錄嘗試和登錄狀態存儲在數據庫中。
不知道什麼是位置,但。

雖然cookies應該用於授權本身,但要在服務器和客戶端之間傳輸會話ID。

+0

謝謝你的想法。根據位置我指的是登錄用戶的國家,城市或城鎮。 – 2011-03-27 15:29:48

+0

@理論上的安東尼。在實踐中你永遠不會使用其他任何東西。無論如何,這個問題是關於不同的問題。 – 2017-08-08 08:28:48

+0

@Anthony您正在使用cookie將會話ID存儲在**客戶端**上。你知道,在哪裏很難找到數據庫。 – 2017-08-08 09:24:09

1

據我所知,您無法跟蹤和比較服務器上的會話,以檢查同一「已認證」用戶的活動連接。我假設你在數據庫中跟蹤你的用戶登錄名和密碼,然後一旦他們通過身份驗證,你就設置一個會話變量來跟蹤他們在給定的最終用戶設備上的當前登錄。

我能想象的最好方法(從斷開的常規故障之外,用戶不能註銷等)將有一個表,你的數據庫來跟蹤登錄和狀態:

  • 用戶ID
  • IP地址(頭/瀏覽器拉)
  • 上次登錄時間戳記(UTC)
  • 當前登錄狀態(布爾)
  • 最後已知的服務器會話值

一旦到位,您可以創建突發事件:

  • 登錄我從一個登錄的設備,如果我再次成功地在其他地方通過讓服務器銷燬保存在數據庫中的會話,並替換它驗證與新設備的有效會話
  • 檢查認證後的IP地址,要麼鎖定用戶,也可以使用上面的方法來註銷遠程會話

你的想法,我希望。

+0

我明白了,這很有幫助。然而,某處你說「一旦他們進行了身份驗證,你就設置了一個會話變量來跟蹤他們在給定和用戶設備上的當前登錄」,我認爲這是一個好主意,但是每當用戶被認證時,這意味着系統將創建一個新的會話ID,允許用戶一次登錄多次。 – 2011-03-27 16:47:32