簡體   English   中英

Asp.net成員身份登錄用戶列表

[英]Asp.net Membership Logged in Users list

我在應用程序中使用以下命令來查找已登錄用戶的列表。 它提供了已登錄用戶的列表,但是當我關閉瀏覽器並清除瀏覽器歷史記錄時,它顯示用戶isonline狀態為true。 請任何人告訴我我錯了嗎?

當用戶登錄驗證用戶並重定向到網址時,

if (user != null)
{
     if (Membership.ValidateUser(user.UserName, txtUserPassword.Text))
     {
        FormsAuthentication.SetAuthCookie(txtUserName.Text, false);
     }
}

登錄的用戶代碼列表

 MembershipUserCollection allUsers = Membership.GetAllUsers();

 MembershipUserCollection filteredUsers = new MembershipUserCollection();

 bool isOnline = true;
 foreach (MembershipUser user in allUsers)
 {
    // if user is currently online, add to gridview list
   if (user.IsOnline == isOnline)
   {
      filteredUsers.Add(user);
   }
 }

不確定為什么要投反對票,這是一個有效的問題。 您可能也永遠也看不到這個答案,但是其他人可能也有同樣的問題。

MembershipUser.IsOnline不是對用戶是否在線的非常准確的檢查。 MSDN ,確定用戶在線:

如果當前日期和時間減去UserIsOnlineTimeWindow屬性值早於該用戶的LastActivityDate。

這意味着用戶可以登錄,然后在10秒后注銷,仍然被視為在線用戶。

因此,在您的情況下,您正在登錄,檢查計數,注銷,關閉瀏覽器,清除緩存等,但是用戶的LastActivityDate仍然落在上述假定的窗口內。 您可以做的是:

  • 縮短時間窗口(這可能會產生一些不必要的副作用)
  • 注銷個人時,將其LastActivityDate更新為使上述檢查無效的時間(例如,當前時間UserIsOnlineTimeWindow
  • 在某些關鍵點手動更新LastActivityDate (例如,如果您的網站是書店,則可能在他們將商品添加到購物LastActivityDate更新LastActivityDate

暫無
暫無

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

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