2009-08-05 33 views

Trả lời

188

Cookie được đọc và ghi qua ActionDispatch#cookies (Cookie ActionController # trong Rails 3 trở xuống). Văn bản trong câu trả lời này được trích dẫn từ liên kết tài liệu API ở trên.

Cookie được đọc là cookie được nhận cùng với yêu cầu, cookie được ghi sẽ được gửi đi cùng với phản hồi. Đọc một cookie không tự lấy lại đối tượng cookie, chỉ là giá trị mà nó nắm giữ.

Ví dụ để viết:

# Sets a simple session cookie. 
    cookies[:user_name] = "david" 

    # Sets a cookie that expires in 1 hour. 
    cookies[:login] = { :value => "XJ-122", :expires => 1.hour.from_now } 

ví dụ cho việc đọc:

cookies[:user_name] # => "david" 
    cookies.size  # => 2 

Ví dụ để xóa:

cookies.delete :user_name 

Xin lưu ý rằng nếu bạn chỉ định: miền khi thiết cookie , bạn cũng phải chỉ định miền khi xóa cookie:

cookies[:key] = { 
    :value => 'a yummy cookie', 
    :expires => 1.year.from_now, 
    :domain => 'domain.com' 
} 

cookies.delete(:key, :domain => 'domain.com') 

Các biểu tượng tùy chọn để cài đặt các tập tin cookie là:

* :value - The cookie’s value or list of values (as an array). 
* :path - The path for which this cookie applies. Defaults to the root of the application. 
* :domain - The domain for which this cookie applies. 
* :expires - The time at which this cookie expires, as a Time object. 
* :secure - Whether this cookie is a only transmitted to HTTPS servers. Default is false. 
* :httponly - Whether this cookie is accessible via scripting or only HTTP. Defaults to false. 
+21

Đây là tất cả trong tài liệu: http: //api.rubyonrails.org/classes/ActionDispatch/Cookies.html –

+6

@Senthil, Nếu bạn đang nhận được một cái gì đó từ một bài viết khác (trong trường hợp này 'như là' từ tài liệu đường ray), Xin vui lòng cho một tham chiếu đến nguồn gốc. – sameera207

17

câu hỏi của bạn có thể liên quan đến câu hỏi này: How to I dynamically set the expiry time for a cookie-based session in Rails

một trong những điểm ý kiến ​​để Deprecating SlideSessions:

"..Nếu bạn cần đặt khoảng thời gian hết hạn cho phiên qua tất cả các bộ điều khiển trong ứng dụng của bạn, chỉ cần thêm tùy chọn sau đây để cấu hình của bạn/intializers/session_store.rb file:

:expire_after => 60.minutes 

Nếu bạn cần phải thiết lập khác nhau thời gian hết hạn trong khác nhau điều khiển hoặc các hành động, sử dụng các sau mã trong hành động hoặc một số before_filter:

request.session_options = request.session_options.dup 
request.session_options[:expire_after]= 5.minutes 
request.session_options.freeze 

sao chép của băm là cần thiết chỉ bởi vì nó đã được đông lạnh tại mà điểm, mặc dù sửa đổi tại nhất: expire_after có thể và hoạt động hoàn hảo ..."

Tôi hy vọng rằng sẽ giúp. :)

3

Điều đáng lưu ý là ngay bây giờ không thể đặt thời gian bắt đầu cho cookie. Một tập hợp cookie luôn hoạt động ngay lập tức.

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