웹 사이트를 프로그래밍하고, 로그인 도구가 아닌 텍스트 상자를 통해 로그인 메커니즘을 준비했으며, 사용자는 로그 아웃하려고하며 로그 아웃 버튼을 클릭합니다. 그러나 내 문제는 사용자가 로그 아웃 버튼을 클릭하거나 웹 페이지를 닫거나 다른 페이지로 전환하지 않으면 어떻게이 상황을 이해할 수 있습니까?
내 메커니즘에 따르면, 사용자가 로그 아웃 할 때 DB에서 일부 삽입 및 삭제 작업이 진행 중입니다.
닫는 페이지에서 다른 페이지로 전환하고 싶습니다.
감사합니다.로그 아웃 솔루션 (ASP.NET)
답변
로그 아웃시 DB 작업을 수행하는 것처럼 들리며 사람들이 로그 아웃 버튼을 클릭하지 않고 탐색하면 코드가 실행되지 않습니다.
global.asax에서 session_end를 살펴보십시오. 어쩌면 거기에 당신의 작전을 넣을 수 있습니다.
protected void Session_End(Object sender, EventArgs e)
{
// Your code goes here. Since your logout code probably relied on the user being
// logged in, you might end up checking Request.IsAuthenticated here. Why? Because
// this event fires any time a session ends -- even if the user is not logged in!
}
사용하면 브라우저가 닫힐 때가 아니라 IIS 세션이 끝날 때 실제로 실행됩니다. 기본적으로 세션은 20 분 동안 사용하지 않으면 시간이 초과됩니다.
이것을 구현하면 로그 아웃 페이지에서 Session.Abandon을 호출하여 Session_End를 트리거 할 수 있습니다. 그건 나에게 깨끗해 보인다.
여기 세션 이벤트에 대한 좀 더 자세한 사항과 MSDN 링크입니다 : http://msdn.microsoft.com/en-us/library/ms178583.aspx
세션 끝은 정말로 당신이 바라는 모든 것일뿐입니다. –
+1 좋은 해결책 - 그것은 우아합니다. –
나는 완전히 잘 모르겠지만, 나는이 구현되는 방법 중 하나가 그 원인이되는 쿠키에 만료를 설정하지 않는 것입니다 생각 브라우저를 닫을 때 잃어버린 세션 쿠키가 될 수 있습니다. 세션 쿠키에는 일반적으로 세션 키가 포함되어 있으므로 브라우저를 다시 열면 새로운 세션이 시작됩니다.
사용자를 시스템으로 만들 때 로그인 (세션과 비슷한 것)하는 사용자가 데이터베이스 테이블에 추가하고 타임 스탬프를 부여했습니다. 사이트를 새로 고침 할 때마다 쿼리를 실행하여 이전의 타임 스탬프가 30 분 이상인 사용자를 삭제합니다. 이것은 매우 쉬운 해결책입니다, 어쩌면 더 좋은 방법이 있습니다.
세션 종료는 아마도 앞서 언급 한 것처럼 최선의 방법 일 수 있지만, 편집증 환자라면 기본적으로 "I 'm still here"라고 말하기 위해 X 초마다 서버에 ping을 보내는 페이지에 javascript/AJAX를 넣을 수 있습니다. 그런 다음 세션을 끝내기 위해 20 분 정도 기다리지 않고 끝내면 더 이상 ping을 수행하지 않으므로 X 초 이내에 떠났음을 알 수 있습니다.
은 global.asax에있는 일정을 확인할 수 있습니다. session_end 이벤트로 db를 업데이트 할 수 있습니다. 각 페이지 및 컨트롤에서 시작되는 beginrequest 이벤트를 사용할 수도 있습니다 (여러 컨트롤이있는 경우 페이지 당 여러 개의 히트 수를 얻을 수 있습니다). page_load 이벤트에 뭔가를 넣을 수도 있습니다.
세션 시간 초과이 20 분이면 세션이 종료되어 사용자가 페이지를 떠났음을 20 분 후에 만 감지합니다. Brian이 설명한 것처럼 global.asax session_end에서 세션 끝을 감지 할 수 있습니다.
페이지를 빠져 나가는 사람을 먼저 감지하는 경우 (예 : 1 분 후)에는 세션 시간 제한을 1 분으로 줄일 수 있습니다.
사용자가 페이지에서 아무 것도하지 않으면 (서버에 다시 게시하지 않음) 사용자가 페이지를 계속 보았음에도 불구하고 세션이 시간 초과됩니다.
메커니즘을 사용하면 문제를 해결할 수 있습니다.귀하의 페이지는 사용자가 귀하의 페이지를 보는 한 백그라운드에서 정기적으로 서버를 호출합니다. 이것은 숨겨진 iFrame과 같은 AJAX Javascript 또는 oher 메커니즘을 사용하여 수행 할 수 있습니다.
예를 들어보기 : ASP.NET AJAX and keeping the Session alive - What is the standard way to do it?
- 1. 로그인 - 로그 아웃 asp.net
- 2. ASP.NET Windows 인증 로그 아웃
- 3. ASP.Net 로그 아웃 코드 블록
- 4. 사이트에서 사용자 로그 아웃
- 5. FormsAuthantication 로그 아웃
- 6. sfDoctrineGuardPlugin - 타임 아웃 로그 아웃
- 7. ASP.NET/IIS : 모든 사용자 로그 아웃
- 8. ASP.NET MVC 경로 로그인/로그 아웃 문제
- 9. asp.net 로그 아웃 인증 코드 작성 방법?
- 10. 로그 아웃 계정 문제를 아는 방법? asp.net
- 11. 프로그래밍 방식으로 ASP.NET 사용자를 로그 아웃
- 12. Linkedin 로그 아웃 기능
- 13. 자동 로그 아웃
- 14. 장고 로그 아웃 문제
- 15. 강제로 사용자 로그 아웃
- 16. PHP 로그 아웃
- 17. GameCenter - 로그 아웃 플레이어
- 18. WWW- 인증 로그 아웃
- 19. Facebook 로그 아웃 문제
- 20. Twitter API - 로그 아웃
- 21. CakePHP 로그 아웃 문제
- 22. JSP의 로그 아웃 코드
- 23. 내 애플리케이션에서 로그 아웃
- 24. Facebook Connect - 로그 아웃
- 25. 로그 아웃 기능
- 26. Documentum Server에서 로그 아웃
- 27. 장고 로그 아웃 URL을
- 28. DotNetOpenAuth "로그 아웃"단추
- 29. linkedin 로그 아웃 문제
- 30. CakePHP 보안 로그 아웃
당신은 백엔드에서 세션 관리를 통해이 작업을 수행해야합니다 ... 당신은 사용자에 의존하거나이 작업을 수행하는 모든 클라이언트 코드를 신뢰할 수 없습니다. jquery/javascript로 수행 할 수있는 일이 있지만 실제로는 클라이언트 측에서 이러한 일이 발생할 것이라고 결코 믿을 수는 없습니다. – JoeGeeky