2013-02-15 11 views
5

मेरा अंतिम लक्ष्य उपयोगकर्ताओं के लिए एक ही समय में कई तृतीय पक्ष प्रमाणीकरण होना है।एक रेल आवेदन में एकाधिक, एक साथ ओथ?

अभी, मैं उपयोगकर्ताओं को बनाने के लिए डेविस का उपयोग कर रहा हूं। उपयोगकर्ता ईमेल या फेसबुक या Google के माध्यम से साइन अप कर सकते हैं और यह काम करता है। लेकिन अब, वे पहले ही साइन अप करने के बाद, मुझे उनको, यूट्यूब या ध्वनि क्लाउड के साथ सत्यापित करने की आवश्यकता है। तो उपयोगकर्ता को तैयार करने के साथ बनाया गया था, लेकिन मुझे अन्य चीजों के साथ सत्यापित करने की भी आवश्यकता है।

चूंकि डेविस अपने स्वयं के उद्देश्यों के लिए सर्वज्ञ है, मैं पक्ष में omniauth का उपयोग नहीं कर सकता।

  • कोशिश वसीयत monkeypatch और यह एक उपयोगकर्ता
  • ओर वर्तमान से सटे पर हाथ से OAuth करते हैं पर एक ही समय में एक से अधिक प्रमाणीकरणों अनुमति देने के लिए प्राप्त करने के लिए:

    मैं इसे देखना जैसा कि मैंने तीन विकल्प हैं कार्यान्वयन

  • स्क्रैप वसीयत वसीयत और

मैं बहुत किसी भी सलाह या अन्य विकल्पों

की सराहना करेंगे कुछ अलग करना

उत्तर

1

मैं इस किया जा सकता है लगता है में इसका इस्तेमाल करते हैं कि तुम क्या जरूरत है: http://blog.joshsoftware.com/2010/12/16/multiple-applications-with-devise-omniauth-and-single-sign-on/

उन्होंने अपना कोड भी खोला!

प्रदाता: https://github.com/joshsoftware/sso-devise-omniauth-provider ग्राहक: https://github.com/joshsoftware/sso-devise-omniauth-client

या और भी बेहतर, बाहर की जाँच करें: http://communityguides.heroku.com/articles/16

+0

धन्यवाद FletchRichman – mcclaskc

1

कोशिश वसीयत monkeypatch और यह एक प्रयोग

आप वसीयत monkeypatch की जरूरत नहीं है पर एक ही समय में एक से अधिक प्रमाणीकरणों अनुमति देने के लिए प्राप्त करने के लिए --- आप अपने खुद के OAuth नियंत्रक हो सकता है

है
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 

    def facebook 
    # handle if already a twitter user 
    # handle if a new user 
    # use the `sign_in user` to sign_in the user 
    end 

    def twitter 
    # handle if already a facebook user 
    # handle if a new user 
    end 
end 

और मार्गों

devise_for :user, 
     :controllers => { 
      :omniauth_callbacks => "users/omniauth_callbacks" 
     } 
संबंधित मुद्दे