我正在尝试确定保护暂存环境的最佳方法是什么。目前,我正在同一台服务器上同时运行登台和生产。
我能想到的两个选择是:
使用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。