2011-02-05 3 views
4

특정 사용자에 대한 ASP.net 멤버십 세션을 분산시킬 방법을 찾고 있습니다. 내가이 일을하는 이유는 내가 관리자를 삭제하려고하기 때문이다. 이것은 잘 작동하지만 사용자가 이미 활성 세션을 가지고 있다면이 세션이 종료 될 때까지 그는 여전히 "온라인"으로 표시됩니다 (매번 Current.User.Identity.IsAuthenticated를 사용하여 확인).ASP.net 멤버쉽 강제 오프라인 사용자 (관리자)

권한이 부여 된 사용자를 기준으로 세션을 종료하는 방법은 무엇입니까? 이 방법은 내가 할 때 Memberships.DeleteUser (사용자 이름) 나는 또한 Sessions.KillByUser 할 수 있습니다 (사용자 이름) 사전에

감사


내가 누군가를 위해 자신의 제안을 다음과 같은 방법을 사용하여 결국

사람 동일한 문제가 있습니다 http://www.chillaxen.com/2011/02/asp-net-force-a-user-offline-as-admin-destroy-a-session-by-username/

+0

DeleteUser를 사용하면 사용자가 로그 아웃 할 수 있다고 생각하지만이 문서는 http://stackoverflow.com/questions/1909234/log-out-asp-net-user-through- SQL –

+0

폴, 방금 테스트했습니다. 그렇지 않았습니다. 사용자가 페이지를 조회 할 때마다 데이터베이스를 확인할 수 있지만 이상적이지 않습니다. 차라리 세션을 파괴하고 내 데이터베이스에 강제로 호출 할 때마다 사용자가 온라인 상태인지 확인하고 싶습니다. (세션의 시점을 종료합니다.) –

답변

1

어떻게 PostAuthorizeRequest 이벤트가 차단 HttpModule을 추가하는 방법에 대한 : 당신이 "파괴"할 ID의 글로벌 목록에 대해 사용자의 자격 증명을 확인합니다. 일치하는 항목이 있으면 사용자 세션을 종료하십시오.

+0

정확히는 깨끗하지 만 작동하지 않을 수 있습니다. 고맙습니다! –

0

야코프가 제안했거나 시도해 볼 수 있습니다 ... Global.asax에서 로그인 한 사용자가 '오프라인으로 만들 사용자 목록'에 있는지 확인한 다음 양식 인증 또는 쿠키 삭제로 사용자를 로그 아웃하십시오 .

+0

userId의 목록을 보유하고있는 응용 프로그램 변수를 사용하여 변형 된 것을 끝내 었으며 승인 된 사용자의 요청이있을 때 필요에 따라 해당 사용자를 로깅합니다 –

관련 문제