2012-03-02 8 views
7

संबंधित: Rails 3 SSL routing redirects from https to http (दुर्भाग्य से काम नहीं किया)।मैं सभी देवता पथ https का उपयोग करने के बारे में कैसे जाना चाहिए?

डुप्लिकेट, लेकिन इस सवाल का जवाब मेरे लिए काम नहीं किया: setting up ssl on devise

मैं एक वेब अनुप्रयोग है कि है अब थोड़ी देर के लिए ठीक काम कर रहा है, लेकिन मैं लॉगिन/संपादन खाते पर रास्तों को एसएसएल जोड़ने की जरूरत है। मैं प्रमाणीकरण के लिए डेविस का उपयोग कर रहा हूँ। मुझे devise विकी में एक प्रविष्टि मिली जिसने प्रक्रिया को बहुत सरल लग रहा था, लेकिन अगर मैं इसे काम करने के लिए प्राप्त कर सकता हूं तो मुझे बहुत बुरा लगता है। सरल हिस्सा यह था:

#in config/environments/production.rb 
config.to_prepare { Devise::SessionsController.force_ssl } 
config.to_prepare { Devise::RegistrationsController.force_ssl } 

और फिर वहाँ इस सार में कोड के बारे में 25 लाइनों है: https://gist.github.com/1040964

मुझे लगता है कि काफी अच्छी तरह से काम करने के लिए मिल गया है, लेकिन जब कभी मैं साइन आउट मैं से एक 301 मिलता है सत्र एक क्रिया को हटा दें जो मुझे एक जीईटी भेजता है।

Started DELETE "https://stackoverflow.com/users/sign_out" for 98.246.164.160 at 2012-03-02 01:45:42 +0000 
[02 Mar 01:45 10886 INFO] Processing by Devise::SessionsController#destroy as HTML 
[02 Mar 01:45 10886 INFO] Parameters: {"authenticity_token"=>"fI4VZ4V0Go2Civo3sJz8Dv5/Wtaa90ynaYr+xxx="} 
[02 Mar 01:45 10886 DEBUG] Parameters: {"_method"=>"delete", "authenticity_token"=>"fI4VZ4V0Go2Civo3sJz8Dv5/Wtaa90ynaYr+xxxx=", "action"=>"destroy", "controller"=>"devise/sessions"} 
[02 Mar 01:45 10886 INFO] Redirected to https://ec2-xx-xx-106-255.us-west-2.compute.amazonaws.com/users/sign_out 
[02 Mar 01:45 10886 INFO] Completed 301 Moved Permanently in 3ms 

Started GET "https://stackoverflow.com/users/sign_out" for xx.xx.164.160 at 2012-03-02 01:45:42 +0000 
[02 Mar 01:45 10886 FATAL] 
ActionController::RoutingError (No route matches [GET] "https://stackoverflow.com/users/sign_out"): 

तो मुझे लगता है कि मुझे स्क्रैच से शुरू करने की आवश्यकता है। किसी भी देवता पथ को https का उपयोग करने का सबसे आसान तरीका क्या है, लेकिन मेरे ऐप के बाकी पथ http का उपयोग करते हैं? मैंने यह कोशिश की (शीर्ष पर एसओ पोस्ट से):

#devise routes 
    scope :protocol => 'https://', :constraints => { :protocol => 'https://' } do 
    devise_for :users, :controllers => { :registrations => :registrations } 
    devise_for :admins 
    end 

लेकिन नहीं जाना। मुझे एक बेहतर सुझाव की जरूरत है।

उत्तर

10

कोई उत्तर नहीं अभी तक है, तो यहाँ मैं क्या निष्कर्ष निकाला है:

  1. एक बार जब आप HTTPS के द्वारा साइट पर पहुँच, उपयोगकर्ता द्वारा साइन आउट (Firesheep का दौरा) तक http द्वारा ही पहुंच नहीं है। उपरोक्त आलेख में डेविस पर बहुत सी चीजें हैं जो साइन इन/आउट पेज पर केवल https रखने पर चर्चा करती हैं। बुरा विचार।

  2. तुम सब वास्तव में जरूरत है यह है:

    #in config/environments/production.rb 
    config.to_prepare { Devise::SessionsController.force_ssl } 
    config.to_prepare { Devise::RegistrationsController.force_ssl } 
    
  3. मैं वसीयत से 'after_sign_in_path' आसपास के मुद्दों की एक टन था। यह पता चला है कि after_sign_out_path_for एक मार्ग लौटने की उम्मीद कर रहा है - यह एक घटना नहीं है, यह पूछ रहा है कि उपयोगकर्ता को कहां निर्देशित किया जाना चाहिए। तो मैं root_path :protocol => 'http://' लौटा और इसका ख्याल रखा।

2

जोड़कर अपने पूरे एप्लिकेशन उपयोग HTTPS बनाने का प्रयास करें:

#in config/environments/production.rb 
config.force_ssl = true 

मैं काफी एक ही समस्या थी। कभी-कभी मैं ठीक से साइन आउट करता हूं कभी-कभी मुझे DELETE कार्रवाई से 301 मिल गया और जीईटी पर रीडायरेक्ट किया गया। मेरे लिए यह समस्या थी।

3

सुनिश्चित करें कि आप अपने सभी डिवाइस लिंक में https का उपयोग करें (यह force_ssl रीडायरेक्ट से बचाता है)।

अपने routes.rb (केवल उत्पादन वातावरण में लागू किया) में:

scope defaults: (Rails.env.production? ? { protocol: 'https' } : {}) do 
    devise_for :users 
end 
अब आपके आवेदन उपयोग में

:

destroy_user_session_url # use _url instead of _path so the protocol is added! 

अब आप अपने लॉगआउट/लिंक (और अन्य वसीयत लिंक) से साइन आउट सीधे https पर इंगित करेगा। Force_ssl HTTP DELETE से HTTPS GET तक फिर से लिखना टाला जाता है।यह सब काम करता है :)

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

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