2010-01-23 12 views
12

https का उपयोग करने के लिए रेल ऐप पर मेरी रूबी पर ट्रैफिक प्राप्त करने के लिए मुझे क्या करने की ज़रूरत है? मेरे पास एक प्रमाणपत्र स्थापित है और अगर मैं साइट पर पहुंचने पर पता बार में मैन्युअल रूप से "https: //" टाइप करता हूं, तो लॉक आइकन दिखाई देता है, लेकिन मेरे ब्राउज़र में मैन्युअल रूप से www.example-app.com पर जाकर http के माध्यम से यातायात भेजता है : //।रेल पर रूबी के साथ एसएसएल

क्या कोई एक लाइन कॉन्फ़िगरेशन है या यह उससे अधिक जटिल है? मुझे पहले कभी एसएसएल से निपटना नहीं था, इसलिए मुझे क्षमा करें अगर मुझे लगता है कि मुझे नहीं पता कि क्या हो रहा है।

मैं MediaTemple में एक (जीएस) में होस्ट कर रहा हूं, अगर यह मायने रखता है या किसी को ऐसे सेटअप के साथ अनुभव है।

उत्तर

14

ssl_requirement मणि देखें।

यह आपको अपनी नियंत्रकों जो कार्रवाई से अधिक पेश की जानी चाहिए https और जो कार्रवाई HTTPS पर सर्व किया जा सकता है में निर्दिष्ट कर सकते हैं। इसके बाद यह http से https तक रीडायरेक्ट करने का ख्याल रखेगा और इसके विपरीत।

प्रलेखन से:

class ApplicationController < ActiveRecord::Base 
    include SslRequirement 
end 

class AccountController < ApplicationController 
    ssl_required :signup, :payment 
    ssl_allowed :index 

    def signup 
    # Non-SSL access will be redirected to SSL 
    end 

    def payment 
    # Non-SSL access will be redirected to SSL 
    end 

    def index 
    # This action will work either with or without SSL 
    end 

    def other 
    # SSL access will be redirected to non-SSL 
    end 
end 
+0

@AustinFitzpatrick आपका लिंक एसएसएल – lulalala

+0

हां से पूरी तरह से असंबंधित है, ऐसा लगता है कि ज्ञान आधार बदल गया है, है ना। मैं इसे हटा दूंगा। –

6

रेल पर रूबी एक आवेदन ढांचा है और वेब सर्वर नहीं है। आपको बदलने के लिए आवश्यक HTTPS कॉन्फ़िगरेशन आपके वेब सर्वर (अपाचे, nginx, आदि) कॉन्फ़िगरेशन में है।

+0

ठीक है, मुझे इतना पता था। मुझे लगता है कि मैं उत्सुक हूं कि उस सेटिंग को बदलने के बारे में कैसे जाना है। वह कहाँ होगा? कम से कम इसकी एक शोध लीड। मैं apache और mongrel config फ़ाइलों के आसपास पोक करेंगे। –

+0

आपको मोंगेल बदलने की जरूरत नहीं है। केवल अपाचे कॉन्फ़िगरेशन फ़ाइल। मुझे लगता है कि डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल में HTTPS कॉन्फ़िगरेशन है लेकिन यह डिफ़ॉल्ट रूप से अक्षम है। Nginx वेब सर्वर का उपयोग करने में भी देखें (कम संसाधनों का उपयोग करता है, कॉन्फ़िगर करने में आसान)। – Zepplock

3

यह बहुत आसान है, और आप इसके लिए एक मणि की जरूरत नहीं है। मैंने ब्लॉग here में www के बिना रीडायरेक्ट करने का ब्लॉग किया। https पर रीडायरेक्ट करना (लगभग) बिल्कुल वही है।

class ApplicationController < ActionController::Base 
    before_filter :redirect_to_https 

    def redirect_to_https 
    redirect_to "https://example.com#{request.fullpath}" if !request.ssl? && request.host != "localhost" 
    end 
end 

कुछ भी है कि आप सुनिश्चित करें कि SSL सुरक्षा के पीछे रखा जाता है बनाना चाहते पर अपने before_filter लागू करें। मैं आमतौर पर कोड पुन: उपयोग और रत्नों के लिए एक हूं, लेकिन यह हास्यास्पद रूप से सरल है। request.protocol के बारे में और पढ़ें। (ध्यान दें कि रूबी 1.9.3/रेल 3.2 वातावरण में, नाम request.fullpath है, कुछ पुराने संस्करणों में, यह request.request_uri था, रीलिज़ नोट, आदि)

+0

क्या यह विकास के माहौल में समस्या नहीं पैदा करेगा? जब तक आप example.com भाग को भी सार नहीं देते? – jerhinesmith

+0

@jerhinesmith संपादित, निश्चित कोड नमूना –

+0

अनुरोध है .request_uri विधि नाम बदल दिया है? यह मेरी रूबी 1.9.3/रेल 3.2 पर्यावरण में परिभाषित नहीं है। –

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