2010-10-21 15 views

Trả lời

10

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).

+2

+1 - không dựa vào trình duyệt. – Nivas

+1

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

+1

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

5

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:

  1. 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.
  2. 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.

3

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.

+0

pls bạn có thể chỉ định chi tiết hoặc u có thể gửi cho tôi ví dụ – DJJ

Các vấn đề liên quan