[英]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.