2010-02-13 30 views
5

Cách tốt nhất (an toàn nhất) để thực hiện xử lý phiên trong máy chủ web là gì? Tôi muốn thêm điều đó, nhưng không biết làm thế nào để thực hiện nó thực sự. Cookie có phải là "phải" để xử lý phiên không? (Để có thể xác định phiên nào)Thực hiện các phiên trong máy chủ web java?

Trả lời

6

Việc xử lý phiên không thực sự là mối quan tâm của bạn. Nó được xử lý bởi lớp HttpSession (đọc mô tả trong javadoc!), Mà bạn có thể lấy bằng cách gọi request.getSession().

Nó hoạt động theo hai cách (không cần để bạn có thể làm bất cứ điều gì để hỗ trợ chúng):

  • sử dụng cookie phiên (nếu cookie được phép)
  • sử dụng url-viết lại - phụ id phiên (JSESSIONID) đến URL.

(Lưu ý: nó thực sự xử lý bởi container servlet (Tomcat, cầu cảng, vv) mà cung cấp một thực hiện HttpSession)

+0

+1. Chỉ cần lấy 'HttpSession' từ yêu cầu và sử dụng' get/setAttribute() 'để lấy/thiết lập các công cụ trong phạm vi phiên. Đó thực sự là tất cả :) – BalusC

+0

Thực ra anh ta không bao giờ nói anh ta đang làm việc trong môi trường thùng chứa servlet. Tôi hiểu anh ta viết là máy chủ web riêng. Có thể là sai mặc dù. – whiskeysierra

+0

@Willi thì câu trả lời của tôi lại hữu ích, bởi vì tôi đã chỉ ra hai tùy chọn được sử dụng. Nhưng điều đó cần phải thực sự được làm rõ. – Bozho

2

Giả sử rằng bạn đang nói về một container servlet, sau đó xử lý phiên xuất phát được sao lưu. Xem relevant part of if the JavaEE tutorial. Nó bao gồm API phiên, cũng như cách phiên được theo dõi (cookie hoặc viết lại URL).

1

Xử lý phiên được xử lý bởi vùng chứa web. Nếu bạn muốn an toàn từ con mắt tò mò, hãy sử dụng https (được thực thi trong tệp web.xml).

Điều bạn cũng có thể quan tâm, là cách người dùng tự xác định mình với vùng chứa web. Một số tùy chọn tồn tại, nơi an toàn nhất là ứng dụng khách sử dụng trình duyệt web có chứng chỉ kỹ thuật số. Điều đó khá tẻ nhạt, nhưng rất an toàn :)

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