ruby-on-rails - 在 Rails 2 应用程序中使用 ssl_requirement 强制使用 SSL

标签 ruby-on-rails ssl ruby-on-rails-2

我有一个需要在 SSL 下运行的 Rails 应用程序。我尝试了 ssl_requirement,但似乎我必须在每个 Controller 中输入所有操作。

有什么方法可以在带有 ssl_requirement 的应用程序 Controller 中添加 before_filter,以便当用户请求为 http 时,应用程序将自动重定向到 https?

谢谢大家。 :)

最佳答案

使用 Rack Middleware .

# lib/force_ssl.rb
class ForceSSL
  def initialize(app)
    @app = app
  end

  def call(env)
    if env['HTTPS'] == 'on' || env['HTTP_X_FORWARDED_PROTO'] == 'https'
      @app.call(env)
    else
      req = Rack::Request.new(env)
      [301, { "Location" => req.url.gsub(/^http:/, "https:") }, []]
    end
  end
end

# config/environment.rb
config.middleware.use "ForceSSL"

关于ruby-on-rails - 在 Rails 2 应用程序中使用 ssl_requirement 强制使用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3861772/

相关文章:

ruby-on-rails - 托管 Rails - 走 VPS 路线?

ruby-on-rails - Rails - 查找所有模型的所有实例,并将某个属性设置为 true

ruby-on-rails - rails "root"函数到底在哪里定义?

php - 无法更改 Laravel 查找 PostgreSQL SSL 证书的位置

java - 如何在Java中设置TLS1.2版本

ruby-on-rails - 从我的 Rails 应用程序登录到另一个应用程序

ruby-on-rails-2 - Rails 2 - 绝对的金钱

ruby-on-rails - 无法检索事件的 ActionCable channel

.net - 在 VB.NET .NET 4.61 中使用 Cert.pem 作为客户端证书用于转发代理

ruby-on-rails - 解析日期时间字符串以转换为不同格式时,Ruby on Rails 出现无效日期错误