2011-06-14 67 views
1

我對ASP.NET Web應用程序有一個要求,即同一用戶不允許多次登錄。我認爲這是爲了防止人們分享用戶名和密碼。ASP.NET阻止同一用戶多次登錄

我遇到的問題是,除非用戶明確註銷系統,否則很難判斷他是否仍然登錄並使用系統。

因此,我可以想到的唯一可靠的方式來實現這一點是每次用戶與系統進行交互並鎖定其他任何不是來自該IP的人時,將數據庫用戶ID,IP地址和時間戳記登錄到數據庫如果他們嘗試在本表中記錄的最後日期的十分鐘內登錄,則爲他們的地址。

任何人都可以想到一個更好的方法來管理這個?

回答

6

如果使用ASP.NET的MembershipProvider你可以做這樣的事情:

protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e) 
    { 
     if (Membership.ValidateUser(Login1.UserName, Login1.Password)) 
     { 
      int time = Membership.UserIsOnlineTimeWindow; 

      MembershipUser user = Membership.GetUser(Login1.UserName, true); 
      if (user != null) 
      { 
       if (user.IsOnline) 
       { 
        lblMessaggeIsOnLine.Visible = true; 
        e.Cancel = true; 
       } 
       else 
        lblMessaggeIsOnLine.Visible = false; 
      } 
     } 
    } 
1

你可以在Global.asax中使用SESSIONEND事件,如果你的會話狀態模式是不SqlServer的。

例如:

你的配置:

<sessionState timeout="15"></sessionState> 

15分鐘後,你的SESSIONEND事件觸發,你可以註銷用戶

1

你是對的。您需要管理用戶登錄並採取相應的行動。讓我知道您是使用自己的提供者還是使用ASP.NET提供者。默認提供者在其中有一些選項。

相關問題