2010-10-01 9 views
25

मैं सरल http प्रमाणीकरण का उपयोग करके उसकेोकू पर एक निजी स्टेजिंग सर्वर स्थापित करना चाहता हूं। क्या यह संभव है?क्या उसके आईटोकू पर ऐप के लिए सरल http प्रमाणीकरण स्थापित करने का कोई तरीका है?

उत्तर

7

बिल्कुल। सबसे आसान समाधान केवल आपके एप्लिकेशन नियंत्रक में कुछ डालना है जो मूल ऑथ समर्थन में निर्मित रेल का उपयोग करता है (यहां देखें: http://railscasts.com/episodes/82-http-basic-authentication) और बस इसे अपने Rails.env के लिए एक सशर्त में लपेटें। ध्यान दें कि हेरोकू पर, डिफ़ॉल्ट रूप से RAILS_ENV उत्पादन पर सेट होता है, लेकिन आप heroku config (http://docs.heroku.com/config-vars) का उपयोग करके अपने गैर-उत्पादन ऐप्स के लिए इसे बदल सकते हैं।

आप कुछ रोडब्लॉक-शैली रैक मिडलवेयर स्थापित करने पर भी विचार कर सकते हैं, लेकिन मैं उपर्युक्त के साथ जाऊंगा।

+0

उपयोगकर्ता नाम और पासवर्ड को हेरोोकू कॉन्फ़िगरेशन वेरिएबल्स (http://blog.heroku.com/archives/2009/4/7/config-vars/) के रूप में स्टोर करना बेहतर है और हैश (http: //www.zacharyfox। कॉम/ब्लॉग/रूबी-ऑन-रेल/पासवर्ड-हैशिंग), हालांकि प्रमाणीकरण केवल तभी होता है जब Rails.env == 'उत्पादन' हो। – avalez

52

एक क्लीनर तरीका सिर्फ अपने स्टेजिंग वातावरण config में रैक मिडलवेयर की एक जोड़ी लाइनों में ड्रॉप करने, नियंत्रक तर्क अकेले छोड़ने है: ओले मोर्टेन एमंडसन की

# 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 

यह टिप सौजन्य से। प्लस Heroku पासवर्ड विनिर्देश और जानकारी:

http://olemortenamundsen.wordpress.com/2011/04/05/ruby-secure-staging-environment-of-your-public-app-from-users-and-bots/

+0

यह समाधान क्लीनर है और मुझे अधिक समझ में आता है क्योंकि इन्फ्रास्ट्रक्चर अज्ञेयवादी है। – Juanda

+0

कृपया ध्यान दें कि index.html सीधे वेब सर्वर द्वारा परोसा जाता है, न कि रैक-रेल और इस प्रकार index.html url संरक्षित नहीं किया जाएगा। Rails द्वारा प्रदान की जाने वाली बाकी सब कुछ संरक्षित की जाएगी। –

14

Rails4 पर, मुझे मिल गया "ऐसा कोई मिडलवेयर डालने के लिए के बाद: रैक :: लॉक" त्रुटि। नीचे करने के लिए एडम कोड बदलें:

# config/environments/staging.rb 
MyApp::Application.configure do 
    config.middleware.use '::Rack::Auth::Basic' do |u, p| 
    [u, p] == ['username', 'password'] 
    end 
    # ... 
end 

देखें: http://www.intridea.com/blog/2013/6/4/tips-and-tricks-for-deploying-rails-4-apps-on-heroku

+0

रेल 3.2 पर पुष्टि की गई काम –

+1

रेल 5 में, मध्यवर्ती एक स्ट्रिंग के बजाय वास्तविक मॉड्यूल चाहता है। 'config.middleware.use :: रैक :: ऑथ :: बेसिक' – Frexuz

2

एक अच्छा Heroku ऐड-ऑन कि प्रमाणीकरण के लिए मोज़िला व्यक्तित्व का उपयोग करता है।

https://addons.heroku.com/wwwhisper

बहुत आसान स्थापित करने और कॉन्फ़िगर करने के लिए: यह (10,000 प्रति माह प्रमाणीकरणों से कम) कम मात्रा साइटों के लिए नि: शुल्क है।

+0

सहमत हुए। 2 उपयोगकर्ता सीमा एकमात्र संभावित मुद्दा है। – freemanoid

+0

यूएस केवल।मोज़िला पर्सन भी बंद कर दिया गया है। '' 30 नवंबर, 2016 को, मोज़िला persona.org सेवाओं को बंद कर देगा। Persona.org और संबंधित डोमेन ऑफ़लाइन ले जायेंगे।''' – Webdevotion

1

application_controller.rb का उपयोग कर यह करने के लिए एक और तरीका है: विकास के लिए :

# app/controllers/application_controller.rb 
    before_filter :http_basic_auth 

    def http_basic_auth 
    if ENV['HTTP_AUTH'] =~ %r{(.+)\:(.+)} 
     unless authenticate_with_http_basic { |user, password| user == $1 && password == $2 } 
     request_http_basic_authentication 
     end 
    end 
    end 

और फिर आप अपने मूल्यों निर्यात करने के लिए की जरूरत है

export HTTP_AUTH=test:test 

Heroku के लिए:

heroku config:set HTTP_AUTH=test:test 

अब जब विंडो प्रॉम्प्ट आपको उपयोगकर्ता/पासवर्ड => परीक्षण/परीक्षण के लिए दर्ज करना चाहिए।

यह आशा है कि आपको यह उपयोगी लगेगा।

संबंधित मुद्दे

 संबंधित मुद्दे