Я использую bartt / ssl_requirement , что позволяет вам обеспечить определенные действия, например:
class ApplicationController < ActionController::Base
include ::SslRequirement
end
class AccountController < ApplicationController
ssl_required :signup, :payment
...
end
Для путей вы просто устанавливаете :secure => true
:
<% form_tag session_path(:secure => true), :class => 'home_login' do -%>
Чтобы отключить в разработке, добавьте это в блок конфигурации config/environments/development.rb
:
config.after_initialize do
SslRequirement.disable_ssl_check = true
end
И если вы используете защищенный поддомен, как я в Heroku, вы можете добавить это в config / сред /production.rb:
config.after_initialize do
SslRequirement.ssl_host = 'secure.example.com'
end
, а также от :domain => :all
до config/initializers/session_store.rb
, поэтому сеанс является общим для всех доменов.например:
MyAppName::Application.config.session_store :cookie_store, key: '_myappname_session', :domain => :all