2012-03-15 2 views
1

로그인 한 사용자 목록을 찾기 위해 내 응용 프로그램에서 다음을 사용했습니다. 그것은 로그인 사용자의 목록을 제공하지만 브라우저를 닫고 브라우저 기록을 지우면 사용자의 isonline 상태가 true로 표시됩니다. 아무도 내가 틀린 곳을 말해 줄 수 있니?Asp.net 회원 로그인 사용자 목록

사용자 로그인의 사용자를 검증하고 URL로 리디렉션하고, 링크를 사용자 코드

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); 
    } 
} 

답변

1

네가 부정적인 투표를 한 이유가 확실치 않은 질문입니다. 당신은 또한이 해답을 결코 볼 수 없지만 다른 사람들은 똑같은 문제를 겪을 수 있습니다.

MembershipUser.IsOnline은 사용자가 온라인 상태인지 여부를 매우 정확하게 검사하지 않습니다. MSDN에서, 사용자가 온라인으로 결정됩니다

현재 날짜와 시간을 뺀 UserIsOnlineTimeWindow 속성 값은 사용자의 LastActivityDate보다 이전 인 경우.

이것은 사용자가 로그인 한 다음 10 초 후에 로그 아웃 할 수 있고 계속 온라인으로 간주 될 수 있음을 의미합니다.

로그인하고 로그 아웃하고 브라우저를 닫고 캐시를 비우는 등의 경우 로그인했지만 사용자의 LastActivityDate은 여전히 ​​위에서 설명한 가정 된 창에 해당합니다. 당신이 할 수있는 것은 :

  • 가 위의 체크가 무효 만들 수있는 시간 LastActivityDate ((일부 원치 않는 측면 효과를 생성 할 수 있습니다) 시간 창 개인을 로그 아웃 할 때
  • 이 업데이트를 단축 예를 들어, 현재 시간 UserIsOnlineTimeWindow)
  • 갱신 특정 키 포인트 (에서 수동으로 LastActivityDate 예를 들어, 사이트는 어쩌면 LastActivityDate 들이 장바구니에 항목을 추가)
  • 를 업데이트 서점 인 경우