代码之家  ›  专栏  ›  技术社区  ›  jonnii

密码保护rails暂存环境

  •  10
  • jonnii  · 技术社区  · 15 年前

    我正在努力找出保护我的登台环境的最佳方法。目前,我正在同一台服务器上运行暂存和生产。

    使用rails摘要身份验证

    # 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配置来进行登台/生产)。


    3 回复  |  直到 15 年前
        1
  •  25
  •   oma    13 年前

    为了帮助其他人,比如我自己,在找到一个类似但更干净的解决方案之前,我读了这篇文章。

    # 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 关于它。

        2
  •  8
  •   Diego D    10 年前

    如果您使用多阶段环境进行部署,并且有生产环境和阶段环境,则只需将这些行添加到 config/environments/staging.rb

    MyApp::Application.configure do
      # RESTRICTING ACCESS TO THE STAGE ENVIRONMENT
      config.middleware.insert_before(::Rack::Runtime, "::Rack::Auth::Basic", "Staging") do |u, p|
        u == 'tester' && p == 'secret'
      end
    
      ...
    
    end
    

    我正在使用Ruby 2和Rails 4,它的工作方式很有魅力!

        3
  •  1
  •   Ryan Bigg Andrés Bonilla    15 年前