Tôi làm cách nào để xử lý sự kiện đóng của trình duyệt để kích hoạt đăng xuất?Cách chúng tôi gọi servlet đăng xuất trên sự kiện đóng trình duyệt
Trả lời
Tôi đã tìm kiếm giải pháp nhất quán cho vấn đề này một thời gian trước đây và quyết định của tôi là xử lý tình huống mà không tin tưởng trình duyệt hoặc người dùng.
Bạn không biết chắc liệu người dùng có rời khỏi trang và khi nào và ngay cả khi bạn sử dụng 'onunload', bạn có thể không nhận được sự kiện trước khi trình duyệt đóng hoặc rời khỏi trang của bạn. Và sự cố trình duyệt sẽ không cung cấp cho bạn bất kỳ loại tín hiệu nào, vì vậy, hãy tin rằng bạn biết người dùng vẫn đang xem trang của bạn và có thể thực hiện thêm bất kỳ hành động nào là thiếu sót. Điều tốt nhất bạn có thể làm khi đăng xuất người dùng là đặt thời gian chờ của phiên phù hợp và nếu bạn cần kiểm soát thêm, bạn có thể thử thêm các cuộc gọi AJAX trên các trang quan trọng có tín hiệu 'Tôi đang sống' và sau đó đăng xuất người dùng không phản hồi nữa (điều đó sẽ yêu cầu trình duyệt được bật AJAX/JS và có thể loại trừ người dùng tiềm năng).
Bạn đang tìm kiếm onunload:
window.onunload = function() {
// check the window is closed (see point 1 below)
// do log out
}
Có 2 vấn đề với điều này:
- Nó được gọi là bất cứ khi nào người dùng điều hướng khỏi trang, làm mới, hoặc nói chung unloads cũng khi cửa sổ trình duyệt bị đóng.
- Dường như có hành vi nhất quán giữa các trình duyệt.
Tôi khuyên bạn nên sử dụng một cách tiếp cận khác.
Bạn phải thực hiện hết thời gian chờ của phiên. Vì bạn đã gắn thẻ câu hỏi JSP của mình, tôi nghĩ đó là một ứng dụng web java mà bạn đang nói đến.
Bạn thường có trình nghe thời gian chờ của phiên và có mã "đăng xuất" trong trình nghe.
Thường không dựa vào các sự kiện phía máy khách: trình duyệt/sự cố hệ thống, tắt máy mà không đóng trình duyệt, v.v. sẽ không kích hoạt sự kiện.
pls bạn có thể chỉ định chi tiết hoặc u có thể gửi cho tôi ví dụ – DJJ
- 1. Chụp sự kiện khi đóng trình duyệt
- 2. Cách tốt nhất để phát hiện trình duyệt đóng/điều hướng đến trang khác và đăng xuất
- 3. Phát hiện sự kiện cuộn trên trình duyệt Android
- 4. Sự kiện đóng cửa sổ Javascript thay vì dỡ sự kiện cho tất cả các trình duyệt
- 5. Nút quay lại trình duyệt sau khi đăng xuất
- 6. Cửa sổ đăng ký Javascript/tab đóng sự kiện trước cửa sổ/tab đóng
- 7. Phiên bị mất khi đóng trình duyệt
- 8. sự kiện trình duyệt cho window.focus()
- 9. Cách gọi sự kiện trước khi Environment.Exit()?
- 10. Ghi lại hoặc đăng nhập tất cả (các) sự kiện DOM/JQuery của trình duyệt
- 11. Xem sự kiện javascript trong trình duyệt
- 12. Sự kiện "xuất hiện" trên JQuery
- 13. Cách đóng các sự kiện Sự kiện máy chủ gửi
- 14. Backbone Sự kiện: đăng nhập tất cả các sự kiện khi chúng được kích hoạt
- 15. Sự kiện onbeforeunload của Chrome khi tab (hoặc trình duyệt) đóng
- 16. Sự kiện Javascript trên trang đăng lại
- 17. Đăng xuất Sự cố đăng xuất bằng facebook iOS sdk
- 18. Sự kiện cuộn trên Trình duyệt Android không kích hoạt. Cần giải quyết sự cố
- 19. Cách đóng trình duyệt bằng Capybara?
- 20. Xác nhận hộp thoại khi tôi đóng trình duyệt?
- 21. Trình duyệt tải xuống sự kiện hoàn chỉnh
- 22. ShowDialog trong Sự kiện đóng
- 23. cách phát hiện sự kiện Đóng trang với ASP.NET
- 24. Tạo async Javascript sự kiện từ plugin trình duyệt (NPAPI)
- 25. Cách tắt nút quay lại trong trình duyệt khi người dùng đăng xuất trong asp.net C#
- 26. Hãy đăng xuất khỏi sự kiện từ hệ thống
- 27. Cách đóng cửa sổ trình duyệt trong AngularJS
- 28. Cookie xác thực/phiên xóa sau khi trình duyệt đóng
- 29. Quá trình đăng ký sẽ không đóng
- 30. Chúng ta có thể gọi một servlet mà không <servlet-mapping> trong mục web.xml
+1 - không dựa vào trình duyệt. – Nivas
i m đồng ý với giải pháp của bạn, nhưng tôi muốn thêm xử lý này để đăng xuất tự động khi người dùng đóng trình duyệt trước khi đăng xuất. trong ứng dụng của tôi nếu người dùng trực tiếp đóng trình duyệt mà không đăng xuất thì người dùng không thể đăng nhập trước 20 phút. – DJJ
Hãy nhớ rằng dù bạn có nghĩ gì đi chăng nữa, dù thông minh thế nào đi nữa, một tín hiệu đăng xuất KHÔNG BAO GIỜ được đảm bảo, như tôi đã giải thích ở trên. Bạn có thể gửi một lệnh đăng xuất bằng cách sử dụng 'onunload', nhưng bạn sẽ phải xử lý nó đúng cách để bạn không thu hút được người dùng đang điều hướng đến một trang khác trong hệ thống của bạn, và nó sẽ không hoạt động mọi lúc. Ý kiến trung thực của tôi là nó không phải là giá trị nỗ lực. Chỉ sống với các phiên bị mất sẽ bị giết bởi thời gian chờ. – mdrg