22

Ai đó có thể chỉ ra tùy chọn cấu hình phiên Rails 3.x mới là gì?Rails 3 tùy chọn cấu hình phiên bổ sung (khóa, hết hạn_after, an toàn)

Tôi đang cố sao chép cùng một cấu hình mà tôi có trong ứng dụng Rails 2.3.x của mình.

Đây là cấu hình mà tôi sử dụng trong các ứng dụng:

#environment.rb 
config.action_controller.session_store = :active_record_store 

config.action_controller.session = { 
    :key   => '_something', #non-secure for development 
    :secret  => 'really long random string' 
    } 


# production.rb - override environment.rb for production 
config.action_controller.session = { 
    :key   => '_something_secure', 
    :secret   => 'really long random string', 
    :expire_after => 60*60,#time in seconds 
    :secure   => true #The session will now not be sent or received on HTTP requests. 
} 

Tuy nhiên, trong Rails 3.x, tôi chỉ có thể tìm thấy đề cập đến các nội dung sau:

AppName::Application.config.session_store :active_record_store 

AppName::Application.config.secret_token = 'really long random string' 

AppName::Application.config.cookie_secret = 'another really long random string' 

Có cấu hình khác cài đặt để kiểm soát khóa, expire_after thời gian và tùy chọn bảo mật?

Về sau, nếu "config.force_ssl = true" được đặt trong production.rb, tôi cho rằng tùy chọn bảo mật không còn cần thiết nữa?

Cảm ơn rất nhiều!

+2

Hạn sử dụng: http://stackoverflow.com/questions/5860950/setting-session-timeout-in-rails-3 –

+2

an toàn: http://stackoverflow.com/ câu hỏi/72242/how-do-i-set-the-httponly-flag-on-cookie-in-ray –

Trả lời

39

Bây giờ bạn định cấu hình cửa hàng phiên dựa trên cookie thông qua trình khởi tạo, có thể là trong config/initializers/session_store.rb. Trong Rails 3 cửa hàng phiên là một mảnh middleware, và các tùy chọn cấu hình được thông qua với một cuộc gọi duy nhất để config.session_store:

Your::Application.config.session_store :cookie_store, :key => '_session' 

Bạn có thể đặt bất kỳ tùy chọn bổ sung mà bạn muốn trong băm với :key, ví dụ

Your::Application.config.session_store :cookie_store, { 
    :key =>   '_session_id', 
    :path =>   '/', 
    :domain =>  nil, 
    :expire_after => nil, 
    :secure =>  false, 
    :httponly =>  true, 
    :cookie_only => true 
} 

(Những người chỉ là giá trị mặc định tiêu chuẩn)

Nếu bạn buộc SSL trong sản xuất sau đó thiết lập bảo mật trên cookie nên không thực sự tạo sự khác biệt trong thực tế, nhưng bạn có thể muốn đặt nó chỉ để được ở bên an toàn ...

Your::Application.config.session_store :cookie_store, { 
    :key =>   '_session_id', 
    :secure =>  Rails.env.production? 
} 
+0

Dường như điều đó nó! Cám ơn vì cái này! – shedd

+2

Và cũng có thể, chỉ cần làm rõ, có vẻ như các tùy chọn này cũng hoạt động trên cửa hàng phiên active_record. Tôi lưu ý rằng các mẫu mã ở trên được mã hóa cho kho lưu trữ cookie, nhưng tôi đã thử các cửa hàng này bằng cửa hàng active_record (đó là câu hỏi được hỏi) và các tùy chọn dường như có hiệu lực. – shedd

+0

Gỡ lỗi cho một dự án cũ, cảm ơn vì đã tiết kiệm thời gian của tôi. –

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