24

सेट किया गया है, मैंने व्यवस्थापक इंटरफ़ेस के माध्यम से किसी उपयोगकर्ता को कुछ अनुमतियां जोड़ दी हैं।Django उपयोगकर्ता get_all_permissions() खाली है जबकि user_permissions

किसी कारण सभी पर्म कार्यों असफल से, जैसे

>>> user.get_all_permissions() 
set([]) 

लेकिन तालिका सीधे एक्सेस करते समय, काम करता है:

>>> user.user_permissions.all() 
(list of permissions as expected) 

क्या "get_all_permissions" (और की तरह सभी पर्म कार्यों पैदा कर सकता है has_perm()) असफल हो?

धन्यवाद

+2

आपकी सेटिंग्स.py में प्रमाणीकरण बैकएंड क्या है? – satoru

उत्तर

42

एक ही समस्या थी। मैं अनुमान लगा रहा हूं कि किसी बिंदु पर आपने स्वयं-निर्मित AUTHENTICATION_BACKEND का उपयोग किया है? इसके नेट पर अधिकांश उदाहरण (डीजेएनजीओ 1.0 दस्तावेज सहित!) का उल्लेख नहीं है कि बैकएंड अनुमतियों के लिए भी जिम्मेदार हैं।

हालांकि, कोई बड़ी बात नहीं:

from django.contrib.auth.backends import ModelBackend 

तो यकीन है कि बैकएंड आप फैली ModelBackend, जैसे लिखा है:: जो कुछ भी बैकएंड में दायर अपने कोड रहता है, यह आयात शामिल

class EmailBackend(ModelBackend): 

चाहिए ठीक रहो।

+0

हाँ, मैंने इसे बाद में पाया। मैंने बैकएंड को केस-असंवेदनशील उपयोगकर्ता नामों का समर्थन करने के लिए संशोधित किया और अनुमतियों को तोड़ दिया। – Boris

+0

+1, यह सही समस्या थी! – Agos

+2

मैंने आपको एक +1 बी/सी दिया जो आपको एक अच्छे आदमी की तरह लगता है – abbood

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