2012-03-08 18 views
7

वर्तमान में मैं Django में अभिगम नियंत्रण को लागू करने के लिए देख रहा हूं। मैंने अंतर्निहित अनुमति के बारे में पढ़ा है, लेकिन यह प्रति ऑब्जेक्ट आधार पर ध्यान नहीं देता है। उदाहरण के लिए, मुझे अनुमतियां चाहिए जैसे "केवल निर्माता ही अपना सामान हटा सकता है"। तो मैंने django-guardian के बारे में पढ़ा। फिर फिर, इसके बारे में सोचने के बाद, प्रबंधन करना मुश्किल हो सकता है और जांचना मुश्किल हो सकता है कि बाधाएं कभी बदलती हैं या नहीं।django - django अनुमतियों की तुलना और django नियमों का उपयोग

मैं डीजेंगो-नियम नामक अगली लोकप्रिय अनुमति प्रबंधन ऐप को देखता हूं। ऐसा लगता है कि मुझे क्या चाहिए। हालांकि, मेरा मानना ​​है कि django-नियमों में एक मॉडल उदाहरण शामिल होना आवश्यक है (इसलिए ऑब्जेक्ट स्तर) यानी अगर मुझे "सदस्य के क्षेत्र" जैसे साधारण दृश्य की आवश्यकता होती है, तो यह इस कार्य को निष्पादित नहीं करता है।

इसने मुझे बाद के परिदृश्यों और पूर्व के लिए django-नियमों के लिए contrib की अनुमति दोनों का उपयोग करने के बारे में सोचा है। मेरा सवाल यह है कि, दोनों अनुमति ढांचे का प्रबंधन करना कितना आसान होगा? उदाहरण के लिए, मेरे पास उपयोगकर्ताओं के विभिन्न समूह हैं। मैं ओवरलैपिंग परिदृश्यों के बारे में चिंतित हूं जिसके द्वारा व्यवस्थापक ने व्यवस्थापक प्रणाली में एक विशेष अनुमति (एक दृश्य तक पहुंच की अनुमति देने के लिए) जोड़ा है, यह सोचकर कि पर्याप्त होना चाहिए लेकिन नियमों द्वारा निर्धारित बाधाओं से बंधे हुए हैं।

मुझे विश्वास है कि यह एक आम मामला है और मैं नम्रता से आपके अनुभवों के आधार पर आपकी सलाह और सिफारिशों की तलाश करता हूं।

+0

Django नियमों को मॉडल उदाहरण की आवश्यकता नहीं है। मॉडल के उदाहरण वैकल्पिक हैं। –

उत्तर

1

यदि आप Django व्यवस्थापक साइट के माध्यम से ऐसा कर रहे हैं, तो आप has_delete_permission() जैसी विधियों को ओवरराइड कर सकते हैं। इन्हें अनुरोध और ऑब्जेक्ट तर्क के रूप में मिलता है, इसलिए आप इसे "उपयोगकर्ता एक्स केवल अपनी ऑब्जेक्ट्स को हटा सकते हैं" जैसे नियम सेट अप करने के लिए इसका उपयोग कर सकते हैं।

+0

पूरी तरह से व्यवस्थापक साइट के माध्यम से नहीं, लेकिन वैसे भी धन्यवाद। उन तरीकों को नोटिस नहीं किया है .. – goh

+0

यदि आप इसे अपने कोड के माध्यम से करना चाहते हैं, तो आप अपने मॉडल में user_can_delete (स्वयं, उपयोगकर्ता) जैसी विधियां जोड़ सकते हैं और उन्हें अपने कोड में और साथ ही has_delete_permission() व्यवस्थापक विधियों में भी उपयोग कर सकते हैं । – che