2013-07-06 2 views
5

मेरा लक्ष्य उपयोगकर्ता को प्रमाणीकृत किए बिना एक डेटाबेस को पढ़ने में सक्षम होना है, इस डेटाबेस को संपादित करने के लिए प्रमाणीकरण आवश्यक होना चाहिए। अन्य सभी डेटाबेस केवल वैध उपयोगकर्ताओं के लिए पढ़ा/लिखने योग्य होना चाहिए। और मैं इसे भविष्य में बनाए गए प्रत्येक डेटाबेस के लिए सेट नहीं करना चाहता हूं, पढ़ने/लिखने के लिए आवश्यक प्रमाणीकरण डिफ़ॉल्ट होना चाहिए।मैं couchDB डेटाबेस को जनता के लिए पठनीय कैसे बना सकता हूं जबकि prec_valid_user को सत्य पर सेट कर सकता हूं?

मैंने सोचा कि मैं require_valid_user से true पर सेट करके ऐसा कर सकता हूं, लेकिन अब कॉच डीबी हमेशा उपयोगकर्ता नाम और पासवर्ड मांगता है, इसलिए मुझे एक डेटाबेस को बाहर करने का एक तरीका चाहिए। यह डेटाबेस सार्वजनिक उपयोगकर्ताओं के लिए पठनीय और लिखने योग्य होना चाहिए।

उत्तर

4

मैं सभी उपयोगकर्ताओं को एक ही डेटाबेस (यानी/लॉगिन) के माध्यम से प्रमाणित करके इस समस्या को हल करता हूं। वह डेटाबेस सार्वजनिक है, और इसमें एक HTML दस्तावेज़ के साथ एक अनुलग्नक के रूप में एक डिज़ाइन दस्तावेज़ है। उपयोगकर्ता को इस फ़ाइल परोसा जाता है, एक फॉर्म पर उनके क्रेडेंशियल्स भरता है, और मैं अपने ब्राउज़र में कुकी को प्रमाणीकृत और स्टोर करने के लिए jQuery.couch.js का उपयोग करता हूं। एक बार जब वे एक वैध लॉगिन प्राप्त कर लेते हैं, तो मैं उनकी भूमिका की जांच करने के लिए उपयोगकर्ता सीटीएक्स ऑब्जेक्ट का निरीक्षण करता हूं, और उन्हें उचित डेटाबेस पर रीडायरेक्ट करता हूं।

यह एक हैक है, लेकिन जब तक आप किसी डेटाबेस में लॉग इन नहीं होते हैं, तब तक CouchDB किसी JSON त्रुटि संदेश के बजाय लॉगिन पृष्ठ की सेवा करने में सक्षम होता है, यह एकमात्र विश्वसनीय तरीका है जिसे मैंने पाया है।

डिज़ाइन दस्तावेज़ में validate_doc_update कुंजी के साथ अपने सार्वजनिक लॉगिन डेटाबेस को सुरक्षित रखना सुनिश्चित करें, इसलिए कोई भी व्यवस्थापक इसमें कुछ भी ओवरराइट नहीं कर सकता है।

उम्मीद है कि इससे मदद मिलती है।

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