2011-08-19 12 views
6

मेरे पास रूबी-ऑन-रेल के साथ किसी और द्वारा बनाई गई वेबसाइट है, और अब मैं एक डीजेंगो एप्लिकेशन बना रहा हूं।डीजेंगो और आरओआर (रेल पर रूबी) एकीकृत करें

मुझे अपने उपयोगकर्ताओं को django पर बनाए गए साइन-इन पेज के साथ साइन इन करने और मेरे django पृष्ठों को सर्फ करने के लिए (अभी तक - आसान करने के लिए) की आवश्यकता है, लेकिन मुझे उस RoR एप्लिकेशन (और से साइडबार पर लिंक जोड़ने की भी आवश्यकता है) वहां वे मेरे ऐप पर वापस आ सकेंगे)।

उपयोगकर्ताओं को यह नहीं पता होना चाहिए कि वे django ऐप - उनके लिए एक वेबसाइट - "आरओआर ऐप उनके लिए दिखता है और महसूस करता है।

मैं यह कैसे कर सकते हैं?
बी वे django ऐप के साथ साइन इन करते हैं ताकि सत्र और सभी उपयोगकर्ता सामग्री django द्वारा प्रबंधित की जाएंगी। RoR ऐप में मैं "पास" सत्र कैसे कर सकता हूं? क्या मुझे iframe का उपयोग करना चाहिए ??
सी डीजेंगो में आरओआर यूआरएल में लिंक कैसा दिखते हैं?

धन्यवाद दोस्तों!

उत्तर

2

यहां पर सबसे अच्छा अभ्यास यह देखने के लिए होगा कि कैसे विज्ञापन नेटवर्क कई गुणों में राज्य साझा करते हैं। एक सामान्य रूप से प्रयुक्त विधि एक ट्रैकिंग पिक्सेल है। उदाहरण के लिए, अपने Django ऐप में, एम्बेड करें:

<img src="http://myrailsapp/mysession_creator" /> 

सुनिश्चित करें कि आपके रेल ऐप एक सत्र के साथ उस पते पर प्रतिक्रिया दे। वह रेल डोमेन पर एक सत्र कुकी स्थापित करेगा।

अब सुरक्षा पर परत के लिए, और यह इस बात पर निर्भर करता है कि आपको किस स्तर की सुरक्षा की आवश्यकता है। आप जानकारी प्रेषित कर सकता है, जैसे:

<img src="http://myrailsapp/mysession_creator?user=myUserName" /> 

जाहिर है अविश्वसनीय रूप से सुरक्षित नहीं है, लेकिन यह अपने अनुप्रयोग पर निर्भर करता है। एक अधिक सुरक्षित तरीका होगा: (। या तो डेटाबेस राज्य या एक सर्वर साइड आवेदन कॉल के माध्यम से)

<img src="http://myrailsapp/mysession_creator?t=<MD5HashTokenHere>" /> 

फिर रेल अनुप्रयोग, Django अनुप्रयोग सर्वर साइड के खिलाफ उस टोकन मान्य के लिए एक तंत्र अधिक काम के लिए होता है, लेकिन अधिक सुरक्षित।

एक अन्य विधि, यदि आपके अनुप्रयोग रूट डोमेन साझा करते हैं, तो आप अनुप्रयोगों के बीच जानकारी पास करने के लिए रूट डोमेन पर एक सुरक्षित कुकी का उपयोग कर सकते हैं। उदाहरण के लिए, https://django.myapp.com एक myapp.com कुकी सेट करता है, और https://rails.myapp.com "उपयोगकर्ता नाम" कुकी ढूंढने के लिए जानता है। रूट डोमेन पर वाइल्डकार्ड SSL प्रमाणपत्र की आवश्यकता है।

एक और विकल्प रेल ऐप के प्रत्येक लिंक के साथ टोकन या लॉगिन जानकारी पास करना है, और पहले_फिल्टर है जो हाथ को पहचानता है और इसी तरह से सत्र स्थापित करता है।

+0

आपका पहला समाधान शानदार काम करता है! मुझे उम्मीद से बहुत आसान है। धन्यवाद!!! मैं अन्य पाठकों के लिए टिप्पणी करना चाहता हूं, हालांकि यह स्पष्ट हो सकता है कि मुझे यह पता चला कि कॉल के साथ कोई समस्या है क्योंकि किसी भी समय किसी भी व्यक्ति द्वारा पासवर्ड के बिना रेल ऐप में नया सत्र शुरू करने के लिए इसका उपयोग किया जा सकता है! इसलिए एक नया और समय-सीमित टोकन के साथ टी पैरामीटर (MD5HashTokenHere) जोड़ना आवश्यक है। धन्यवाद फिर से @ जोशुआ - तुमने मुझे बचाया !! – reakh

0

मुझे यकीन नहीं है कि यह काम करेगा, लेकिन हमने 2 रेल ऐप्स का उपयोग करने से पहले ऐसा किया था।

सुनिश्चित करें कि रेल में सत्र कुंजी और आपके django ऐप समान हैं।

रेल में, यह शायद इस तरह दिखना होगा:

ActionController::Base.session = { 
    :key   => '_my_session_key', 
    :secret  => '_my_session_secret' 
} 

Django में, एक त्वरित गूगल इस के लिए मुझे का नेतृत्व किया:

https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-SECRET_KEY

मैं एक बार लगता है कि उन लोगों के ही हैं, दो ऐप्स एक ही सत्र साझा करेंगे।

+0

पैट, मेरा मानना ​​है कि रेल और डैंजो के पास अलग-अलग सत्र प्रारूप और प्रोटोकॉल हैं, इसलिए वे सत्रों को मूल रूप से साझा नहीं कर सकते हैं (जैसे दो रेल ऐप्स सक्षम हो सकते हैं।) – Joshua

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