【问题标题】:Rails 3.1 set up to run app in parallel with HTTP and HTTPSRails 3.1 设置为与 HTTP 和 HTTPS 并行运行应用程序
【发布时间】:2012-01-02 14:51:16
【问题描述】:

你们如何设置 Rails 3.1 应用程序以在生产环境中并行运行 HTTP 和 HTTPS?

另外,你如何在 HTTP 和 HTTPS 之间共享会话?

谢谢

【问题讨论】:

  • 如果应用程序可以在 HTTP 或 HTTPS 模式下运行,为什么还要使用 HTTPS?你的目标是什么?
  • 我特别想使用 HTTPS 进行登录和注册。主页将被重定向到 HTTP,因为它包含不安全的内容并且实际上不需要任何安全措施。其他页面可以是 HTTPS 或 HTTP,具体取决于用户。

标签: ruby-on-rails http ssl https ruby-on-rails-3.1


【解决方案1】:

我使用bartt/ssl_requirement,它允许您保护某些操作,例如:

class ApplicationController < ActionController::Base
  include ::SslRequirement
end

class AccountController < ApplicationController
  ssl_required :signup, :payment
  ...
end

对于路径,您只需设置:secure =&gt; 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/environments/production.rb:

config.after_initialize do
  SslRequirement.ssl_host = 'secure.example.com'
end

以及:domain =&gt; :allconfig/initializers/session_store.rb,因此会话在所有域之间共享。例如:

MyAppName::Application.config.session_store :cookie_store, key: '_myappname_session', :domain => :all

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多