it-swarm-vi.com

Thực tiễn tốt nhất để cảnh báo hết hạn phiên

Ứng dụng của chúng tôi có phiên hết hạn tự động 30 phút - phiên được gia hạn trên giao tiếp máy chủ.

Cách tốt nhất để liên lạc phiên hết hạn với người dùng là gì? Suy nghĩ ban đầu của tôi là hiển thị cảnh báo phương thức ngay trước khi hết hạn với "phiên của bạn sắp hết hạn [tiếp tục]" (từ ngữ tốt hơn? ) cho phép người dùng tiếp tục (giao tiếp trong nền để làm mới phiên).

  • Có bao giờ thích hợp để hiển thị một bộ đếm thời gian phiên cho người dùng?
  • Có bao giờ thích hợp để hết hạn một phiên mà người dùng không có cơ hội gia hạn không?
  • Người dùng có cần lưu ý khi nào phiên sẽ hết hạn miễn là họ có tùy chọn để gia hạn không?
32
Luke Charde

Tôi tin rằng hết thời gian phiên thuộc danh mục "phản hồi đúng thời gian". Để đáp ứng khả năng tiếp cận sau đó, người dùng nên có cơ hội gia hạn, hoặc ít nhất, được thông báo rằng điều đó xảy ra.

Thông báo cho người dùng về thời lượng của phiên không phải là một yêu cầu, mặc dù vậy cần xác định theo "cơ sở cho mỗi ứng dụng". Chẳng hạn, nếu đó là một ứng dụng mà người dùng đang tạo/sửa đổi dữ liệu phức tạp hoặc bất cứ thứ gì phức tạp/tốn thời gian khác - cung cấp cho họ cơ hội mở rộng trong khi họ lục lọi trong các ghi chú của họ có thể là một "tính năng" quan trọng.

13
Susan R

Điều đầu tiên cần hiểu là người dùng không quan tâm đến các phiên, phiên là thứ mà bạn với tư cách là nhà phát triển đang buộc người dùng phải đáp ứng nhu cầu bảo mật/ứng dụng của bạn. Trong một thế giới lý tưởng, phiên sẽ không bao giờ hết hạn, như Facebook, Hotmail, v.v.

Điều đó nói rằng trong một số tình huống như các trang web của ngân hàng, chúng tôi vẫn cần hết hạn các phiên vì chúng tôi không muốn mở cửa cho bất kỳ ai ăn cắp tiền của chúng tôi khi chúng tôi đi đến loo hoặc một cái gì đó.

Ok, vậy khi chúng ta phải hết hạn một phiên, chúng ta có nên cảnh báo người dùng và cho họ tùy chọn gia hạn không?

Chà, hết hạn một phiên được sử dụng để đăng xuất người dùng khi họ không sử dụng trang web/ứng dụng để bảo mật dữ liệu. Theo logic, nếu người dùng vẫn đang sử dụng trang thì phiên của họ không nên hết hạn. Do đó, cảnh báo người dùng sắp hết hạn phiên trở nên không liên quan, tức là nếu người dùng đang sử dụng trang thì họ sẽ không bao giờ thấy nó VÀ nếu người dùng không sử dụng trang thì họ sẽ không bao giờ nhìn thấy.

Nếu bạn phải có các phiên hết hạn, hãy tập trung nỗ lực vào việc ghi lại hoạt động của người dùng tốt hơn để các phiên không hết hạn cho người dùng hoạt động.

EDIT : Ví dụ: Đối với ứng dụng web của chúng tôi, tôi đã phát triển một công cụ JavaScript để nắm bắt sự tương tác của người dùng phía máy khách như, phím xuống, di chuyển chuột, nhấp chuột, cuộn, v.v. Khi một sự kiện người dùng được gửi, yêu cầu ajax được gửi để giữ cho phiên hoạt động.

Để tránh nhiều cuộc gọi ajax đến máy chủ mỗi khi người dùng di chuyển chuột, bạn có thể đặt JavaScript chỉ gửi yêu cầu ajax cứ sau 5 phút hoặc lâu hơn. tức là Nế thời gian tương tác của người dùng cuối > lớn hơn 5 phút Sau đó gửi yêu cầu ajax để duy trì phiên.

18
ArchieVersace

Bạn luôn có thể đưa ra một kịch bản trong đó cảnh báo sẽ không được chú ý - nghĩ đến giờ nghỉ trưa, hoặc một cuộc họp khẩn cấp. Vì vậy, trước tiên tôi sẽ cố gắng làm cho sự tồn tại của các phiên đó là minh bạch cho người dùng của tôi càng tốt:

  • đặt lại bộ hẹn giờ phiên càng thường xuyên càng tốt (ví dụ: bất cứ khi nào hoạt động được phát hiện) để giảm thiểu sự xuất hiện của thời gian chờ
  • nếu phiên đã hết hạn và mọi thứ người dùng đã thực hiện có thể được khôi phục trực tiếp tại chỗ, hãy âm thầm mở một phiên mới và chèn lại dữ liệu đó - làm cho nó giống như phiên không bao giờ hết hạn ở nơi đầu tiên
  • nếu phiên đã hết hạn và một số dữ liệu không thể được khôi phục tại chỗ, hãy thử cung cấp nó bằng một số phương tiện khác (ví dụ: một khối văn bản hoặc tệp để sao chép-dán dữ liệu từ đó)
  • nếu phiên đã hết hạn và một số dữ liệu bị mất, xin lỗi sâu sắc.
12
Jan

Mint.com ' s là một cách tiếp cận rất hay:

enter image description here

Tôi cũng đặc biệt khuyên bạn nên chống lại các hộp thông báo kiểu alert() để cảnh báo người dùng về phiên hết hạn của họ (một số trang web thực hiện việc này). Bạn không thể hủy bỏ nó, vì vậy nếu người dùng đã rời đi để ăn trưa, họ sẽ quay lại hộp thông báo, nhấp vào "OK" để lưu phiên của họ và sau đó xem bản thân họ đã đăng xuất. Các hộp thông báo cũng không được chia tỷ lệ trên nhiều tab.

12
Phil Cohen

Thay vì các lệnh gọi jquery/ajax để duy trì phiên hoạt động, bạn có thể cân nhắc sử dụng bộ đếm thời gian javascript setInterval để làm mới hình ảnh spacer 1x1 nhỏ khi phiên sắp hết hạn một cách có điều kiện hoặc luôn luôn không có hiệu suất.

1
Manu

Tôi muốn đề nghị rằng bạn không.

Tất nhiên, nó phụ thuộc vào ứng dụng, nhưng rất nhiều trang web sử dụng tính năng này (ngân hàng, v.v.) thực sự được thiết kế là "đi vào, làm việc của bạn, sau đó rời đi". Như vậy, những thông báo và tin nhắn này thực sự chỉ nhắc nhở tôi rằng tôi có thể vẫn mở tab đó. Tôi đã rời khỏi trang rồi, không cần phải nói với tôi là hết hạn. Trường hợp xấu? Tôi đăng nhập lại.

Bây giờ, một ngoại lệ (lớn) sẽ là bất kỳ loại đầu vào dữ liệu lớn nào mà người dùng có thể nhập nhiều dữ liệu, không bao giờ gửi, sau đó mất phiên. Tuy nhiên, trong các tình huống đó, lý tưởng nhất là sẽ có một số loại chức năng tự động lưu đang diễn ra (ala Google Docs).

0
DA01