6

मैं वर्तमान में एक Django साइट विकसित कर रहा हूं जिसमें उपयोगकर्ता एकाधिक 'खाते' रख सकते हैं, ताकि वे साइट के माध्यम से बातचीत करते समय अलग-अलग सार्वजनिक प्रोफाइल के बीच सहजता से स्विच कर सकें। जो मैं डिजाइन कर रहा हूं वह प्रति व्यक्ति एकाधिक रजिस्ट्रेशन को आकर्षित करने की संभावना है (और निराश नहीं होगा), मैं बस इसे इस तरह से पेश करना चाहता हूं क्योंकि उपयोगकर्ता प्रोफ़ाइल को एक साथ बंधे रख सकते हैं, आसानी से स्विच कर सकते हैं और केवल लॉग इन करना होगा एक बारमें।Django मल्टी-उपयोगकर्ता लॉगिन - सर्वोत्तम दृष्टिकोण?

दो दृष्टिकोण मैं सोचा है अब तक शामिल हैं:

  • एक (User मॉडल + SiteProfile मॉडल) जोड़ी और प्रति व्यक्ति कई PublicProfile मॉडल। AUTH_PROFILE_MODULESiteProfile मॉडल पर इंगित करने के लिए सेट है। इसके साथ समस्या यह है कि मैं प्रति-ऑब्जेक्ट अनुमतियों का आसानी से उपयोग नहीं कर सकता: इन्हें User ऑब्जेक्ट पर सेट किया जाएगा, न कि सार्वजनिक प्रोफ़ाइल, इस प्रकार "PublicProfileA" के लिए एक पृष्ठ देखने की अनुमति भी लागू की जाएगी जब उपयोगकर्ता मजाक कर रहा हो "पब्लिकप्रोफाइल बी" के रूप में।

  • एक Account मॉडल और कई (User मॉडल + UserProfile मॉडल) प्रति व्यक्ति जोड़े। AUTH_PROFILE_MODULEUserProfile मॉडल पर इंगित करने के लिए सेट है। इसमें इरादे के अनुसार काम करने वाली अनुमतियों का अतिरिक्त लाभ होगा, और मेरे पास एक कस्टम बैकएंड हो सकता है जो उपयोगकर्ताओं को प्रमाणीकृत करके उपयोगकर्ताओं को स्विच कर देगा यदि वे वर्तमान में किसी अन्य उपयोगकर्ता के रूप में लॉग इन हैं, तो Account ऑब्जेक्ट विदेशी कुंजी के रूप में है । प्रमाणीकरण Account ऑब्जेक्ट पर फ़ील्ड पढ़ने से होता है, जिसका अर्थ यह होगा कि प्रत्येक User ऑब्जेक्ट पर password फ़ील्ड बर्बाद हो जाएगी।

  • उपर्युक्त के रूप में, लेकिन से Account उप-वर्गिंग। हालांकि इसके खिलाफ दृढ़ता से सलाह दी गई है (कारणों के लिए अस्पष्ट)।

क्या इसमें कोई समस्या या बेहतर दृष्टिकोण है? आखिरकार, क्या मुझे अंतर्निहित User मॉडल का उपयोग एक-प्रति-व्यक्ति मॉडल के रूप में करना चाहिए जो सार्वजनिक सामना करने वाले प्रोफाइल के समूह की पहचान करता है (जिनमें से इन प्रोफाइलों में एफके वापस User ऑब्जेक्ट पर है), या इसे प्रोफ़ाइल के रूप में उपयोग करें, प्रत्येक व्यक्ति के लिए एक Account ऑब्जेक्ट पर वापस लिंक करना?

+0

दिलचस्प सवाल। क्या आप इन अलग-अलग प्रोफाइलों की पेशकश के बारे में थोड़ा और संदर्भ प्रदान कर सकते हैं? जैसे यदि आप ईकॉमर्स साइट बना रहे थे, तो आपके उपयोगकर्ताओं के पास व्यक्तिगत खाते और कॉर्पोरेट खाते हो सकते थे। यह उदाहरण छूट नीति, आदेश मात्रा/मात्रा इत्यादि के लिए प्रभावित होगा। यह जानकारी एक और सूचित सुझाव देने में मदद करेगी। – rantanplan

+0

वाह, बहुत देर हो चुकी है! यह एक सामाजिक साइट के लिए है, एक समारोह एक भूमिका निभा तत्व है। सभी खातों के संबंध में 'बराबर' हैं, उनके पास अलग-अलग प्रकार नहीं होंगे, वहां कोई कॉपरेट या व्यक्तिगत खाता, बस 'सदस्य' जैसी कोई चीज़ नहीं है। इसके अलावा, कस्टम प्रमाणीकरण बैकएंड वैसे भी लिखे जाएंगे, क्योंकि अंतर्निहित डीजेगो ऑथ बैकएंड मेरी आवश्यकताओं को पूरा नहीं करता है। उम्मीद है की वो मदद करदे! –

उत्तर

0

हां, मुझे लगता है कि सबसे अच्छा तरीका प्रति व्यक्ति केवल एक और एक व्यक्ति होगा और कई सार्वजनिक प्रोफाइल ऑब्जेक्ट्स जो वे "स्विच" कर सकते हैं। इससे उनके लिए केवल एक उपयोगकर्ता नाम/पासवर्ड का लाभ मिलता है और ऐसा लगता है कि Django के औथ आम तौर पर कैसे काम करता है।

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