2009-09-26 15 views
10

मैं अपने स्टेजिंग वातावरण को सुरक्षित करने का सबसे अच्छा तरीका क्या काम करने की कोशिश कर रहा हूं। वर्तमान में मैं एक ही सर्वर पर दोनों स्टेजिंग और उत्पादन चला रहा हूं।पासवर्ड एक रेल स्टेजिंग वातावरण की सुरक्षा करता है

दो विकल्प मैं के बारे में सोच सकते हैं करने के लिए होगा:

उपयोग रेल प्रमाणीकरण पचाने

मैं 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 से। मैं नवीनतम रेल 2.3 पर चल रहा हूं इसलिए मुझे इसके साथ सुरक्षा समस्या से मुक्त होना चाहिए।

उपयोग वेब सर्वर प्रमाणीकरण

मैं भी प्राप्त कर सकते थे इस .htaccess या अपाचे अनुमतियों का उपयोग कर, लेकिन यह अपने सर्वर प्रावधान से थोड़ा अधिक जटिल बना देता है (मैं बावर्ची उपयोग कर रहा हूँ, और मंचन के लिए अलग अपाचे कॉन्फ़िगरेशन की आवश्यकता होगी /उत्पादन)।


अभी के लिए मेरे पास पहला लागू और काम कर रहा है, क्या आपको इसके साथ कोई समस्या दिखाई देती है? क्या मुझे कुछ स्पष्ट याद आया है? अग्रिम में धन्यवाद!

उत्तर

25

दूसरों को मदद करने के लिए इसे बंपिंग करना, जैसा कि मैंने इसे एक समान, लेकिन क्लीनर समाधान पर बसने से पहले पढ़ा था।

# 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 लिखा था।

+0

यह विकल्प भी है, जिसे हाल ही में जोड़ा गया था: https://github.com/rails/rails/commit/e2b07ee000439d0bd41f725ff9f7ad53e52a7e9b, मुझे आपका समाधान पसंद है, मुझे लगता है कि यह जाने का तरीका है। – jonnii

1

मैं http मूल प्रमाणीकरण के साथ जाऊंगा, मुझे इसके साथ कोई अंतर्निहित समस्या नहीं दिखाई दे रही है।

+0

यही वह है जो मैंने किया। इसने पिछले 3 महीनों के लिए एक इलाज किया है। – jonnii

8

आप मल्टी-निर्धारण वातावरण के साथ की तैनाती कर रहे हैं और इसलिए आप उत्पादन वातावरण और स्टेजिंग वातावरण है, तो आप केवल config/वातावरण/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 

में ये पंक्तियां जोड़ने के लिए ऐसा करके की जरूरत है , आपको अपाचे को कॉन्फ़िगर करने की आवश्यकता नहीं है।

मैं रेल 4 के साथ रूबी 2 का उपयोग कर रहा हूं और यह एक आकर्षण की तरह काम करता है!