2011-01-30 10 views
19

क्या किसी ने सिनात्रा के साथ Devise मणि स्थापित किया है?सिनात्रा के साथ देवता

डेविस वार्डन पर आधारित है और इसलिए इसे सिनात्रा पर काम करना चाहिए, मुझे इसे कार्यान्वित करने के बारे में कोई संबंधित जानकारी नहीं मिली।

+0

यह सुंदर रेल-केंद्रित है: https://github.com/plataformatec/devise/blob/master/app/controllers/devise/confirmations_controller.rb – scragz

उत्तर

22

वसीयत वास्तव में warden के लिए अच्छा सहायकों के साथ सिर्फ एक रेल केंद्रित आवरण है, जो अंतर्निहित रैक प्रमाणीकरण ढांचा है । इसलिए यदि आप रेल के साथ संयोजन के साथ सिनात्रा का उपयोग कर रहे हैं, तो आप अपने रेल ऐप में डेविस का उपयोग कर सकते हैं और सीधे अपने सिनात्रा ऐप में वार्डन का उपयोग कर सकते हैं, और वे वही उपयोगकर्ता सत्र डेटा देखेंगे।

तो नहीं, आप सीधे अपने सिनात्रा ऐप के भीतर डेविस का उपयोग नहीं कर सकते हैं, लेकिन यदि आप रेल में कुछ टुकड़ों और सिनात्रा के अन्य टुकड़ों के साथ मॉड्यूलर ऐप बना रहे हैं, तो आप घटकों के बीच डेविस/वार्डन का उपयोग कर सकते हैं।

6

डेविस केवल रेल के लिए डिज़ाइन किया गया है। आप सिनात्रा के साथ इसका इस्तेमाल नहीं कर सकते।

आप देख सकते हैं:

https://github.com/maxjustus/sinatra-authentication

http://www.gittr.com/index.php/archive/sinatra-basic-authentication-selectively-applied/

https://gist.github.com/243611

+0

दूसरा लिंक अब काम नहीं कर रहा है। – zhon

4

मैं इसे काम करने में सक्षम था। कुछ मुख्य पहलुओं थे:

  1. वसीयत रेल के साथ काम (वसीयत एक रेल अनुप्रयोग, इसके बिना काम नहीं करेगा)
  2. सेटअप मानचित्रण (मार्ग) रैक स्तर पर दोनों रेल और सिनात्रा का समर्थन करने के जाओ
  3. रेल और सिनात्रा के बीच सत्र साझा
  4. सेटअप वार्डन और यह सिनात्रा

यहाँ के लिए उपलब्ध बनाने /config.ru से कोड की सबसे अधिक प्रासंगिक हिस्सा है:

# 

    # ... 

    # Rest with Rails 
    map "/" do 
     run MyApp::Application 
    end 

    # Anything urls starting with /slim will go to Sinatra 
    map "/slim" do 

     # make sure :key and :secret be in-sync with initializers/secret_store.rb initializers/secret_token.rb 
     use Rack::Session::Cookie, :key => '<< see, initializers/secret_store.rb >>', :secret => '<< copy from initializers/secret_token.rb >>' 

     # Point Warden to the Sinatra App 
     use Warden::Manager do |manager| 
     manager.failure_app = AppMain 
     manager.default_scope = Devise.default_scope 
     end 

     # Borrowed from https://gist.github.com/217362 
     Warden::Manager.before_failure do |env, opts| 
     env['REQUEST_METHOD'] = "POST" 
     end 

     run AppMain 
    end 

एक पूर्ण समाधान के लिए http://labnote.beedesk.com/sinatra-warden-rails-devise देखें।

+0

आपको अपने ऐप को रेल – AMBasra

+0

@AMBasra में विकसित करना चाहिए था, मुझे सीआरयूडी एपीआई विकसित करने के लिए एक सरल ढांचे की आवश्यकता थी, सिनात्रा कार्यों के लिए सही आकार के उपकरण की तरह दिखती थी। –

+0

मेरा मतलब था कि आप अपने ऐप के साथ रेल सर्वर चला रहे हैं। तो यह और अधिक हल्का नहीं है। यदि आप सब कुछ एक में कर सकते हैं तो दो ढांचे का उपयोग क्यों करें। उत्पादन पर्यावरण रेल और सिनात्रा दोनों भी चलाएगा। – AMBasra

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