2009-09-21 26 views
12

Nếu tôi làm session[:greeting] = "Hi!" trong một thao tác điều khiển, tôi có thể tham khảo session[:greeting] trong các hoạt động của bộ điều khiển khác trong bao lâu?Các đối tượng được lưu trong phiên Rails tồn tại trong bao lâu?

Cho đến khi người dùng đóng trình duyệt của mình?

Cho đến khi một khoảng thời gian nhất định trôi qua?

Ngoài ra, làm cách nào tôi có thể định cấu hình giá trị này?

Trả lời

17

Cho đến khi người dùng đóng trình duyệt của mình. Đó là định nghĩa của một phiên.

Để cấu hình một cái gì đó lâu hơn, bạn sẽ cần phải sử dụng một trong số:

  • cookie. Đây có thể được đánh dấu để giữ cho bất kỳ khoảng thời gian (hoặc cho đến khi người dùng đóng trình duyệt)
  • có nhật ký người dùng trong

Thông thường có một sự kết hợp trong số này, nơi người dùng được đưa ra một "nhớ tôi "mã thông báo dưới dạng cookie, để họ không phải đăng nhập mỗi khi họ khởi động lại trình duyệt.

+0

Có điều gì đó giống như phiên [: chào] = "Xin chào!" sẽ bị mất khi người dùng truy cập URL hoặc đường dẫn khác trên ứng dụng? (Hoặc chỉ sớm hơn đóng trình duyệt ...) Đây có thể là thực hành không tốt, nhưng tôi chỉ sử dụng phiên để lưu trữ một biến mà tôi cần phải tồn tại trên các yêu cầu AJAX trên một trang nhất định. – dmonopoly

+0

Nhìn vào hành vi "flash". Đó là một băm được lưu trữ trong phiên được đặt lại sau yêu cầu tiếp theo (với một số sự tinh tế). – ndp

+0

Tôi không hiểu tại sao đăng nhập sẽ dẫn đến biến phiên tồn tại lâu hơn. Bạn có thể giải thích? – lulalala

3

Tính năng này khả dụng cho đến khi người dùng đóng trình duyệt của họ.

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