2011-03-14 13 views
8

पृष्ठभूमिउपयोगकर्ता पंजीकरण या अन्यथा

अभी, मैं उस उपयोगकर्ता से लगातार और महत्वपूर्ण जानकारी स्टोर हैं CouchDB/couchapp से कोई ऐप का निर्माण करने की कोशिश कर रहा हूँ, और सोफेप के साथ उपयोगकर्ता साइनअप के लिए आवश्यक चरणों पर अटक गया हूं।

अनिवार्य रूप से, मैं जो करना चाहता हूं वह एक सरल साइनअप फॉर्म है जो उपयोगकर्ता मेरे ऐप का उपयोग करने के लिए खाता पंजीकृत करने के लिए उपयोग कर सकते हैं। यह couchdb _users डेटाबेस में एक नए उपयोगकर्ता के निर्माण, और नए डेटाबेस के निर्माण के साथ, नए उपयोगकर्ता के साथ डेटाबेस व्यवस्थापक की भूमिका नियुक्त किया जाएगा।

सभी को सर्वर व्यवस्थापक प्रमाण-पत्रों की आवश्यकता होती है।

आदर्श रूप में, मुझे jquery.couch.js कार्यों में से किसी एक का उपयोग करके कॉल करने में सक्षम होना पसंद है, लेकिन ऐसा करने का एक सुरक्षित तरीका प्रतीत नहीं होता है।

प्रश्न

एक मध्यम परत सॉफ्टवेयर या अन्यथा करने के लिए इस कार्य को ऑफलोड करने के लिए सबसे कारगर अभी तक सुरक्षित तरीका क्या है (या नहीं है ??)?

कुशलता से, मेरा मतलब है कि उपयोगकर्ता के लिए कम से कम कदमों की आवश्यकता है, मेरे लिए कम से कम परेशानी नहीं है।

अभी तक, मैंने एक अलग node.js सर्वर स्थापित किया है जो साइनअप अनुरोध प्राप्त करता है। मेरे couchDB सर्वर व्यवस्थापक क्रेडेंशियल्स को नोड server.js फ़ाइल पर निजी चर के रूप में संग्रहीत किया जाता है। मैं फिर couch-client का उपयोग कर couchDB पर किसी भी डीबी निर्माण अनुरोध को पोस्ट करता हूं।

क्या मैं यहां बहुत से (संभावित असुरक्षित) हुप्स के माध्यम से कूद रहा हूं? क्या सुरक्षित साइनअप प्रक्रिया सुनिश्चित करने का कोई बेहतर तरीका है?

धन्यवाद।

उत्तर

3

मैंने आपके द्वारा वर्णित तरीके से node.js का उपयोग किया है। यह MySQL के साथ संवाद करने के लिए PHP जैसे मिडलवेयर का उपयोग करने से अलग नहीं है। एपीआई के रूप में मजबूत है क्योंकि कॉच डीबी के लिए, मध्य में कुछ और उपयोग करना अभी भी एक अच्छा विचार है ताकि आप AJAX की आवश्यकता के बिना सामग्री को पूरा कर सकें। (विशेष रूप से यदि आपको किसी इकाई या इकाइयों की सूची से अधिक जटिल की आवश्यकता है)

यदि आप प्रत्यक्ष CouchApp के साथ जारी रखने का निर्णय लेते हैं, तो आपको CouchDB सर्वर पर HTTPS अनुरोधों को रूट करने के लिए प्रॉक्सी सर्वर का उपयोग करना होगा । (Nginx और Apache इस उपयोग के मामले के सामान्य उदाहरण हैं) यदि आप इसका उपयोग नहीं कर सकते हैं, तो क्लाइंट-साइड में एन्क्रिप्शन की परत जोड़ने के बारे में विकी में article है। मुझे wiki पर पता चला कि देशी एसएसएल समर्थन v1.1 के साथ जोड़ा जाएगा (और स्रोत के ट्रंक में समर्थित है)

(बीटीडब्ल्यू, इन सभी लेखों को मैं "How-to Guides" के माध्यम से CouchDB विकी पर आया था)

+0

कुछ आश्वासन प्राप्त करने के लिए बढ़िया। मुझे पहले से ही निगेंक्स तक तार मिला है, लेकिन किसी भी तरह से मैंने देशी एसएसएल suport को याद किया। = पी –

+1

जून 2011 तक, कॉचडब 1.1 के पास एसएसएल –

4

एक व्यवस्थापक उपयोगकर्ता को डेटाबेस बनाने और डेटाबेस व्यवस्थापक असाइन करने की आवश्यकता है।

डोमिनिक का जवाब बहुत अच्छा है। हालांकि, एक विकल्प है कि सीधा कॉचैप आर्किटेक्चर रखना और उपयोगकर्ता-सोफे श्रृंखला के बाहर, अपने व्यवस्थापक कोड बाहरी चलाएं।

उदाहरण के लिए, नोडजेएस में, एक व्यवस्थापक के रूप में कोच डीबी से कनेक्ट करें। प्रश्न /_users/_changes?feed=continuous&include_docs=true।उपयोगकर्ताओं को बनाए जाने पर रीयल-टाइम में आपको डेटा ईवेंट प्राप्त होगा। जब आप कोई नया उपयोगकर्ता देखते हैं, तो डेटाबेस बनाएं और उन्हें व्यवस्थापक के रूप में असाइन करें।

ग्राहक कोड अपने नए डेटाबेस के लिए मतदान कर सकते हैं। या, ग्राहक को _changes COMET फ़ीड के माध्यम से भी क्वेरी कर सकता है। किसी भी तरह से, जब ब्राउज़र जानता है कि खाता सेट अप है, तो आप इसे यूआई में उपयोगकर्ता को दिखा सकते हैं।

प्रॉक्सी (3-परत आर्किटेक्चर) बहुत अच्छे हैं। ऐसा कुछ नहीं है जो वे नहीं कर सकते हैं। हालांकि, मैं अक्सर दो कारणों से "बाहरी एजेंट के साथ कॉच डीबी" की वास्तुकला पसंद करता हूं:

  1. यह आसान है। एक वेब सर्वर है। उपयोगकर्ता कॉच डीबी से जुड़ते हैं। आप कोच डीबी से कनेक्ट करते हैं। सब कुछ डेटाबेस में है। कम विन्यास और रखरखाव के मुद्दे हैं।
  2. यह लचीला है। आप किसी भी सर्वर से चल रहे किसी भी भाषा में बाहरी क्लाइंट लिख सकते हैं। आप सब कुछ करने के लिए एक बड़ा ऐप लिखते हैं, या कई छोटे ऐप्स एक कार्य पर ध्यान केंद्रित करने के लिए लिखते हैं (उदाहरण के लिए नए डेटाबेस बनाना, खोए गए पासवर्ड के लिए उपयोगकर्ताओं को ईमेल करना, आपको सूचित करना कि डेटाबेस बहुत बड़ा है, आदि)।
+1

के लिए मूल समर्थन है अब यह कोशिश करने के लिए कुछ ऐसा लगता है। धन्यवाद! निश्चित रूप से [बाहरी घटनाओं] (http://davispj.com/2010/09/26/new-couchdb-externals-api.html) कार्यक्षमता पर एक नज़र डालेंगे। –

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

  • कोई संबंधित समस्या नहीं^_^