簡體   English   中英

防止用戶組中的同時並發和最大登錄

[英]Prevent simultaneous concurrent & maximum logins in User group

是否可以在Asp.Net Web應用程序中僅允許每個用戶進行一次並發登錄?

我正在開發一個Web應用程序,我希望確保該網站每個用戶一次只能登錄一次。 如何檢查當前用戶是否已登錄。

此外,我想限制每組定義的登錄數量。 像最多10個IT部門人員可以一次登錄,最多5個人力資源部門人員可以登錄。

我使用簡單的數據庫來存儲登錄信息

因此,您需要跟蹤這兩個不同的事情並檢查。

首先,當有人登錄時,您將要使該用戶名的任何先前會話無效。 這可以防止有人在一台計算機上登錄然后登錄另一台計算機,因為第一台計算機將無法再生成任何新的經過身份驗證的請求。 在大多數情況下,這對於處理未積極嘗試破壞此限制的用戶來說已足夠。

接下來會有點復雜。 您需要查找的是用戶使用相同的經過身份驗證的會話ID向您的服務器發出請求,但使用不同的IP,broswers等。您將要查找的是處理一個人登錄的情況,然后查看其cookie中的會話信息,然后在另一台計算機上重新創建具有相同會話ID的相同cookie。

第二種方法確實存在問題。 大多數人沒有完全靜態的IP。 完全靜態的IP實際上非常罕見。 也就是說,對於大多數用戶來說,他們的IP不會經常輪換; 在積極使用網站時,他們不太可能看到它發生變化。 如果使用適當的網站,這些人不會有任何問題。 但是,有些人的互聯網提供商會經常輪換他們的IP。 這些人可能也沒有做任何不合適的事情。 如果你不處理人們的IP可能經常變化的事實,你最終可能會不斷地從某些互聯網提供商那里踢出所有用戶。 您真正想要注意的是具有給定IP /會話的用戶執行的操作,然后來自具有相同會話的不同IP的同一帳戶的操作,然后來自第一IP的更多操作的情況當你在很短的時間內看到兩個IP之間的這種翻轉時,它強烈表明兩台不同機器上的兩個人正在訪問該帳戶。 您可以通過合並每個請求的其他方面來進一步改進此度量標准,例如瀏覽器信息(包含版本,最低版本組件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM