2010-11-02 75 views
1

我在我的應用程序中使用提供的ASP.NET SQL成員資格&角色提供程序。防止來自同一用戶名的多個連接

如何防止同一用戶使用相同憑據從不同的工作站進行登錄?我可以想象使用IP地址爲此,但我真的不知道從哪裏開始...

同樣路由器背後的用戶呢?有沒有辦法阻止他們從不同的客戶端PC訪問?

回答

2

IP不會是一種非常好的方式,因爲典型的公司局域網背後的所有用戶都會認爲你是從同一個IP連接的。解決方法是註銷使用相同憑證登錄的用戶,從而只保留最新登錄的用戶。這可以通過將登錄用戶的ID或名稱保存在應用程序或數據庫中來實現。一旦新用戶會話開始,請檢查用戶是否在應用程序/數據庫中。如果是這樣,請將其標記爲髒。在這些頁面中,檢查應用程序中是否存在UserID/Name,如果用戶被標記爲髒,請調用註銷。這可以在BasePage中實現,即網站/應用程序中的所有頁面都從中繼承。

1

也許您可以存儲您正在使用的唯一標識用戶的所有內容,例如ApplicationState中的UserId,並檢查該值是否爲空。您可以在SessionState的開始將他們的UserId值添加到ApplicationState,然後在SessionState的末尾從ApplicationState中移除該值。

ApplicationState對於Web應用程序是全局的,這意味着它可以被所有用戶和會話訪問,而SessionState的作用域被限制爲單個用戶和會話。