양식 인증을 사용하는 asp 웹 응용 프로그램이 있습니다. asp.net 멤버십 공급자를 사용하지 않고 사용자 지정 인증을 만들고 있습니다. 따라서 사용자가 로그인 할 때, 나는 그를 위해 티켓과 쿠키를 만들고 사용자가 로그 아웃 할 때 그를 삭제합니다. 사용자가 브라우저의 오른쪽 상단에있는 닫기 버튼을 클릭하면 문제가 발생합니다. 아시다시피 이것은 클라이언트 측 이벤트이고 실행중인 서버 측 이벤트는 없습니다.
내 질문 :
티켓과 쿠키를 제거하기 위해 사용자가 닫기 버튼을 클릭하면 어떻게해야합니까?asp.net 응용 프로그램 인증 문제
답변
비 지속 쿠키를 사용해야합니다. 이 메서드의 두 번째 인수에 false를 전달하여이 작업을 수행합니다. http://msdn.microsoft.com/en-us/library/twk5762b.aspx
"onbeforeunload"DOM 이벤트에 연결할 수 있습니다. 접근 방식의 몇은 ('fieldID가') __doPostBack를 클라이언트 측에서
이 숨겨진 필드의 값을 설정 걸릴 호출 할 수 있습니다. 이 필드의 값인 chagned 이벤트의 서버 측 이벤트 핸들러에서 티켓과 인증 토큰을 제거하십시오. 이걸 아약스 게시판으로 만들 수 있습니다. 사용자가 브라우저를 닫더라도 웹 서버가 공격을 받았을지라도 토큰을 제거한다는 아이디어가 있습니다.
같은 이벤트 처리기에서 웹 서비스 호출을 실행하여 인증 토큰을 제거합니다.
onbeforeunload 이벤트 처리기를 사용하면 하이퍼 링크를 클릭 할 때마다 이벤트 처리기를 실행하는 코드로 연결되는 경우가 있으므로 IE에는주의해야합니다. 이 문제를 해결하려면 if ($ .browser.msie) $ ('a')와 같이 할 수 있습니다. live ('click', function() { var a = 1; document.ignoreUnload = document. ignoreUnload || $ .inArray (this.id, Sys.WebForms.PageRequestManager.getInstance()._asyncPostBackControlClientIDs)> -1; }); – Nikhil
쿠키를 제거하기 위해이 작업을 수행 하시겠습니까? – Stilgar
아이디어는 단순히 브라우저 closign 이벤트를 트랩하고 서버에서 필요한 모든 처리를 위해 서버 측 호출을 시작하는 것입니다. 정말 아무것도 될 수 있습니다. 그래서 나는 일반적인 종류의 해결책을 제시했다. – Nikhil
서비스 세션에서 session.Abandon() 및 session_end 이벤트를 사용하여 사용자 세션이 만료되거나 종료되는 즉시 티켓을 삭제한다고 가정합니다.
나는 지금까지 ASP.NET 세션 만료 메커니즘을 사용하여 세션이 만료 될 때까지 기다렸습니다. 외관상으로는 의지하고 싶지 않기 때문에 "windows close"이벤트를 어떻게 든 잡아서 서버에 신호를 보내야합니다.
This link이 작업 방법에 대한 예제가 도움이 될 수 있습니다.
Ok. 경찰은 downvoting 할 때 의견을 추가하고 있습니다. 그래서 ... 의견을 기다리고 있습니다. – Larry
쿠키를 영구적으로 작성하지 않는 한 브라우저를 닫으면 쿠키가 자동으로 삭제됩니다. 클라이언트 또는 서버 측에서 어떤 이벤트도 필요 없습니다. 그것은 쿠키가 "브라우저를 닫은 후에도 보관해야합니다"라는 의미입니다. 원하는 동작이 브라우저를 닫을 때 쿠키를 제거하는 것이 아닌 경우 영구적으로 만들거나 영구 쿠키를 만듭니다. – Stilgar
비 영구 쿠키가 적절합니다. 어쨌든, @Ghyath Serhal 아이디어는 타임 아웃 메커니즘에 의존하지 않고 서버 측에서 세션을 닫는 것입니다. 여기서 문제는 클라이언트 측의 쿠키에 어떤 일이 생기더라도 지속성 여부와 상관없이 클라이언트 측 창이 닫힐 때 서버 측의 세션을 닫아야한다는 것입니다. 리소스와 물건이 할당되어 릴리스되어야하기 때문에 서버 측에서 세션을 닫는 것이 중요합니다. – Larry
- 1. iPhone 응용 프로그램 용 ASP.NET MVC 인증
- 2. ASP.NET 응용 프로그램 배포 문제
- 3. asp.net MVC 인증 문제
- 4. Asp.net mvc 응용 프로그램 배포/보안 문제
- 5. winforms 응용 프로그램에서 asp.net 응용 프로그램에 인증
- 6. ASP.Net Webforms 응용 프로그램과 ASP.Net 웹 서비스 간의 인증 문제
- 7. ASP.NET 인증 티켓 만료 문제
- 8. 잘못된 데이터베이스를 가리키는 ASP.NET 응용 프로그램 문제
- 9. ASP.NET 응용 프로그램 풀 재활용 문제
- 10. PeopleSoft IFrame에서 실행되는 ASP.NET 응용 프로그램 - 문제
- 11. Asp.net MVC 배포 응용 프로그램 문제
- 12. ASP.NET MVC "재고 응용 프로그램"배포 문제
- 13. ASP.NET MVC2 응용 프로그램 배포 문제
- 14. ASP.net 웹 응용 프로그램 데이터 무결성 문제
- 15. ASP.Net 폼 인증 공급자 문제
- 16. 게임 센터 인증 응용 프로그램
- 17. Joomla에서 GWT 응용 프로그램 인증
- 18. ASP.NET 응용 프로그램 및 ASPNETDB.MDF
- 19. 데스크톱 클라이언트와 웹 응용 프로그램 사이의 인증
- 20. ASP.NET Ajax 인증 서비스 문제
- 21. asp.net 양식 인증 리디렉션 문제
- 22. ASP.NET MVC 2 인증 문제
- 23. 웹 응용 프로그램의 내부 응용 프로그램 인증
- 24. ASP.NET 웹 응용 프로그램 배포
- 25. ValidateUser Forms 인증 문제
- 26. 폼 인증 응용 프로그램 내의 ASP.NET 웹 서비스
- 27. ASP.NET 응용 프로그램 제어 수준의 인증 프레임 워크
- 28. ASP.NET : 응용 프로그램 간의 양식 인증 : 일치하는 암호 암호화 설정
- 29. asp.net 인증 - web.config의 자격 증명 사용 - 문제
- 30. ASP.Net 응용 프로그램 외부의 MailDefinition
쿠키 이외에도 티켓도 제거해야한다는 질문이 있습니다. 솔루션이 해당 시나리오를 처리하지 않습니다. – Nikhil
티켓이 쿠키에 있다고 가정합니다. 이것이 양식 인증이 작동하는 방법입니다. 실제로 폼 인증을 사용하고 있고 백엔드 메커니즘 만 구현 한 경우 (즉, FormsAuthentication 클래스를 사용하고있는 경우) 이는 전환 할 단 하나의 인수 일뿐입니다. 그가 FormsAuthentication 클래스를 사용하지 않는다면 나는 틀린 일을 할 것이라고 생각합니다 :) – Stilgar
@Ghyath Serhal은 플래그, 파일, 데이터베이스 테이블의 레코드 또는 "세션"이 어떻게 든 알 수있는 모든 것을 "티켓"이라고 부릅니다. 이 "티켓"은 세션이 만료되는 즉시 삭제되거나 무효화됩니다. 내가 잘못 ? – Larry