我正在尝试确定保护暂存环境的最佳方法是什么。目前,我正在同一台服务器上同时运行登台和生产。

我能想到的两个选择是:

使用Rails摘要认证

我可以在application_controller.rb中放入这样的内容

# Password protection for staging environment
if RAILS_ENV == 'staging'
  before_filter :authenticate_for_staging
end

def authenticate_for_staging
  success = authenticate_or_request_with_http_digest("Staging") do |username|
    if username == "staging"
      "staging_password"
    end
  end
  unless success
    request_http_digest_authentication("Admin", "Authentication failed")
  end
end


这是从Ryan Daigle's blog撕下的。我正在最新的Rails 2.3上运行,因此应该摆脱他们在此方面遇到的安全问题。

使用Web服务器身份验证

我也可以使用.htaccess或apache权限来实现此目的,但是这会使我的服务器配置稍微复杂一些(我使用的是Chef,并且需要不同的apache配置进行登台/生产)。



目前,我已经实现并工作了第一个程序,您看到它的问题了吗?我错过了明显的事情吗?提前致谢!

最佳答案

在解决类似但更干净的解决方案之前,请先尝试阅读本手册以帮助其他人,例如我自己。

# config/environments/staging.rb

MyApp::Application.configure do
  config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "Staging") do |u, p|
    [u, p] == ['username', 'password']
  end

 #... other config
end


我写了一个简短的blog post

07-24 12:41