Дополнительные настройки конфигурации сеанса Rails 3 (ключ, expires_after, безопасный) - PullRequest
24 голосов
/ 18 июня 2011

Может кто-нибудь указать, какие новые параметры конфигурации сеанса в Rails 3.x?

Я пытаюсь продублировать ту же конфигурацию, что и в моем приложении Rails 2.3.x.

Это конфигурация, которую я использовал в приложении:

#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.
}

Однако в Rails 3.x я могу только найти упоминание о следующем:

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'

Существуют ли другие параметры конфигурации для управления ключом, временем истечения срока действия и параметром защиты?

Что касается последнего, если в файле production.rb установлено "config.force_ssl = true", я полагаю, что безопасный параметр больше не требуется?

Большое спасибо!

1 Ответ

40 голосов
/ 14 февраля 2012

Теперь вы настраиваете хранилище сеансов на основе файлов cookie через инициализатор, вероятно, в config/initializers/session_store.rb. В Rails 3 хранилище сеансов является частью промежуточного программного обеспечения, а параметры конфигурации передаются с помощью одного вызова config.session_store:

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

Вы можете поместить любые дополнительные параметры в хеш с помощью :key, например,

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

(это только стандартные значения по умолчанию)

Если вы активируете SSL в производственной среде, тогда настройка безопасности для куки не должна иметь большого значения на практике, но вы можете установить его просто для безопасности ...

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