2010-05-18 7 views
9

मुझे यकीन है कि नहीं कर रहा हूँ अगर यह एक बग है या मैं बस कुछ याद कर रहा हूँ (हालांकि मैं पहले से ही inlines के बारे में दस्तावेज़ पार्स है), लेकिन:Django inlines उपयोगकर्ता अनुमतियों + दृश्य केवल - अनुमतियाँ मुद्दों

मान लीजिए मेरे पास मॉडल ए मॉडल मॉडल है। मॉडल बी की एक इनलाइन है यू यू के पास मॉडल बी तक पूर्ण पहुंच है, लेकिन केवल मॉडल ए (इसलिए, कोई जोड़ नहीं, न ही हटाएं) में अनुमतियां बदलें।

हालांकि, मॉडल बी को संपादित करते समय, उपयोगकर्ता यू अभी भी नीचे "एक और जोड़ें" लिंक देख सकता है, हालांकि यू ने उस संबंधित मॉडल के लिए अनुमतियां नहीं जोड़ दी हैं।

क्या गलत है? वह लिंक क्यों दिख रहा है? मेरा तर्क कहता है कि यदि यू को ए जोड़ने की अनुमति नहीं है, तो लिंक अब और प्रकट नहीं होना चाहिए।

इसके अलावा, आदर्श रूप में, मैं मॉडल ए के लिए केवल यू देखने का अधिकार देना चाहता हूं (इसलिए कोई जोड़, हटाएं या बदलें - केवल देखें), लेकिन मैंने इसके बारे में पढ़ा है (अजीब, अगर आप मुझसे पूछें) दर्शन के अनुसार जिस पर "यदि आप यू पर भरोसा नहीं करते हैं, तो उसे केवल व्यवस्थापक क्षेत्र तक पहुंच से इनकार कर दें"। एक बेवकूफ सिद्धांत की तरह।

अभी, मैं केवल यू को छोड़कर 'केवल अनुमतियों को देखने' की अनुकरण करने की कोशिश कर रहा हूं और सभी क्षेत्रों को केवल पढ़ने के लिए सेट कर रहा हूं। लेकिन मुझे लगता है कि यह एक बेवकूफ दृष्टिकोण है और इससे उपरोक्त अनुमतियों की समस्याएं भी हो सकती हैं ...

मेरे जैसे औसत Django प्रोग्रामर केवल दृश्य-अनुमतियों को कैसे प्राप्त करते हैं, और सबसे अधिक मुझे कैसे छुटकारा पाना चाहिए व्यवस्थापक संपादन फ़ॉर्म के नीचे "एक और जोड़ें" लिंक का?

अग्रिम धन्यवाद!

+0

यहां बड़ा प्रश्न: आप इस "उपयोगकर्ता एक्स को केवल ऑब्जेक्ट वाई के लिए केवल पढ़ने के लिए उपयोग की अनुमति" को परिभाषित कर रहे हैं? परम फ्रेमवर्क एक आधार है जिस पर आपको कुछ ऑब्जेक्ट्स पर उपयोगकर्ता क्रियाओं की जांच और सत्यापन करने के लिए अपना कोड लिखना चाहिए। अधिक जानने के लिए [allow_required] [1] सजावट पर पढ़ें। व्यवस्थापक स्वयं जादुई रूप से अनुमान लगाएगा कि उपयोगकर्ता एक्स वाई ऑब्जेक्ट्स नहीं बना सकता है और बाद में "वाई जोड़ें" विकल्प को हटा सकता है। [1]: http://docs.djangoproject.com/en/1.2/topics/auth/#django.contrib.auth.decorators।allow_required – dguaraglia

+0

यदि आपके पास कुछ नमूना मॉडल और मॉडलडमिन कक्षाएं हैं तो प्रश्न को पढ़ना आसान होगा –

उत्तर

2

यदि मैं व्यवस्थापक में जो कुछ भी पढ़ा गया संस्करण चाहता हूं, तो मैं कुछ सामान्य Django विचार लिखता हूं और उन्हें व्यवस्थापक से बाहर रखता हूं।

मुझे नहीं लगता कि आप जिस चीज के बारे में बात कर रहे हैं (किसी ऑब्जेक्ट में परिवर्तन की इजाजत दे रही है लेकिन इसकी इनलाइन नहीं है) वास्तव में व्यवस्थापक द्वारा समर्थित है। मुझे गलत मत समझो: व्यवस्थापक बहुत लचीला और उपयोगी है, लेकिन यह आपके लिए सबकुछ करने का इरादा नहीं है।

एक ही रास्ता मैं आप व्यवस्थापक में इतना नियंत्रण करने में सक्षम होने के देख नहीं इनलाइन ए

"आप यू पर विश्वास नहीं करते हैं, तो बस उसे व्यवस्थापक क्षेत्र के लिए उपयोग सभी से इनकार करने के लिए है साथ में"। एक बेवकूफ सिद्धांत की तरह।

वास्तव में, जब आप मानते हैं कि व्यवस्थापक का उपयोग सुरक्षा नियंत्रण के बढ़िया स्तर की गारंटी के लिए आवश्यक सुरक्षा स्तर की आवश्यकता नहीं है। व्यवस्थापक में कई खुले और एक्स्टेंसिबल प्रकृति के कारण, कई जगहें हैं, जहां बग लुप्त हो सकती हैं (आमतौर पर उपयोगकर्ता द्वारा लिखित कोड में) जिसे खराब अभिनेताओं द्वारा शोषित किया जा सकता है। यही कारण है कि अविश्वसनीय उपयोगकर्ताओं को हमेशा सभी व्यवस्थापक यूआरएल 404 लौटाते हैं।

वैसे भी, जब एक्सेस नियंत्रण आवश्यकताओं को ठीक किया जाता है, तो यह असंभव हो जाता है कि एक सामान्य (यानी django.contrib) समाधान फिट होगा।

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