문제

Windows 응용 프로그램에서 작업 중입니다. Win App에서 세션 (웹 앱에있는)을 시뮬레이션해야합니다. 여기서 사용자가 일정 기간 동안 비활성화되면 로그온합니다. 사용자 로그인 상태는 데이터베이스에서 유지됩니다.

어떤 혁신적인 아이디어 ???

도움이 되었습니까?

해결책

세션 (또는 CallContext 또는 다른 것)이 필요하지 않습니다. 하나씩 일어나는 것 하나의 제한이있는 "사용자 저장소":

사용자가 로그인하거나 일부 활동을 보여준 후에는 그 날짜/시간을 저장해야합니다. 다음에 사용자가 무언가를 원할 때 (LastActivity + LogoutTime)를 실제 날짜/시간과 비교하십시오.

프로세스의 개요는 다음과 같습니다.

              [User login]
                   |
                   !
 [User 'store' saves user date + login time]
 [This is a singleton                      ]

                  ...

[Next time user wants to do something. The   ]
[program asks user data from the user 'store']
                   |
                   !
[If the actual time is greater than user     ]
[lastactivity + LOGOUTTIME, user cannot do it]
[If not, then update last activity           ]

Userstore는 a로 구현 될 수 있습니다 사전 그리고 사용 :

// Log in
Singleton.UserStore.Add("John", new UserData( yourUserObject, DateTime.Now));

...

// Check (ie. in a property-get)
var userData = Singleton.UserStore["John"];
if (userData.LastActivityDate + _LOGOUTIME > DateTime.Now()) 
{
   throw UserAutomaticallyLoggedOut();
}
else
{
   userData.LastActivityDate = DateTime.Now();
}

다른 팁

떠오르는 것은 타이머가 0에 도달 할 때 배경 작업자를 사용하여 사용자를 로그 오프하는 것입니다. 이 타이머는 사용자가 만드는 모든 작업에 대해 재설정됩니다. 또는 마우스 또는 키보드 이벤트에 연결되어 사용자가 마우스를 움직이지 않거나 키보드를 사용하지 않으면 로그 오프 시간에 도달 할 때까지 타이머 카운트가 다운됩니다.

응용 프로그램에서 사용자가 소프트웨어와 상호 작용할 때마다 재설정되는 일종의 시간 초과가있는 클래스를 만들 수 있습니다. 시간 초과에 도달하면 사용자가 로그 아웃됩니다.

여기서 까다로운 것은 사용자 상호 작용을 감지하는 것입니다. ASP.NET에서는 매우 쉽습니다. 본질적으로 페이지 요청 만 확인해야합니다. Windows Forms 응용 프로그램에서는 훨씬 더 자세한 수준으로 Montor 입력이 필요합니다 (예를 들어 텍스트 상자의 주요 프레스는 사용자 상호 작용이 될 것입니다). KeyPress 이벤트 리스너와 함께 키프 리뷰 속성이 양식의 좋은 방법 일 수 있다고 생각합니다.

글쎄, 먼저, 비활성이라는 것은 무엇을 의미합니까? 웹에서 당신은 아무것도없는 상태를 시뮬레이션하려고합니다. 그러나 클라이언트 앱에서는 모든 종류의 이벤트를 얻을 수 있습니다. Onde 아이디어는 텍스트 상자, 버튼 등과 같은 표준 입력 컨트롤에서 USERCONTROLS를 만들 수 있고 이벤트가 호출 될 때 일종의 타이머 개체를 업데이트하도록 할 수 있다는 것입니다. 다른 하나는 Usercontrol 물건을 포기하고 작성하는 각 이벤트 핸들러의 타이머를 업데이트하는 것입니다. 아마도 양식 자체의 MouseMove 또는 키 다운 이벤트를 기반으로 타이머를 업데이트하는 것이 더 간단 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top