我們構建了一個Intranet應用程序,用戶必須登錄才能執行某些任務... 我們必須確保沒有「應用程序用戶」多次登錄與此同時。如何防止同一用戶在不同的電腦上同時登錄
因此,我現在所做的是將當前的asp.net會話ID存儲在數據庫中,然後比較每個頁面加載時它們是否相同。會話ID在用戶登錄時存儲在數據庫中。
但是通過使用這種檢查,總是需要一個數據庫選擇。所以我不太喜歡這種方式。必須有更好的方法來解決這個問題,或者?
我們使用ASP .NET2,C#..
預先感謝任何輸入
[信息更新]
我已經創建了一個自定義的MembershipProvider和定製Membershippuser。 Membershipuser有一個名爲「StartSession(string sessionId)」的方法,當用戶登錄時使用該方法。
其他方法CheckSession(字符串sessionId)用於每個回發,並將當前會話ID與會話ID存儲在數據庫中。
[更新] 謝謝大家的意見。我現在將使用緩存來防止永久數據庫訪問。我首先想到已經有一個Class或者某個東西已經在處理這個問題。
一個數據庫查詢不應該擔心無用,你有大量的trafik .. – Peter 2009-06-25 09:36:54
值得確保有一個真正的原因這個限制,因爲它也會影響一臺機器上的一個用戶打開兩個瀏覽器。並且可能無法檢測到打開兩個選項卡的單個瀏覽器。 – Richard 2009-06-25 09:36:56
我們不希望人們打開它的標籤,他們應該只有一個窗口打開,這也是一個許可證問題...我們不希望他們購買一個用戶許可證,並將其用於100人.. 。所以它確保應用程序正常工作,並且許可證正確使用 但是也許這是一個錯誤的想法無論如何... – nWorx 2009-06-25 09:40:40