6

मैं यह समझने की कोशिश कर रहा हूं कि अतिरिक्त कार्यक्षमता के साथ प्रमाणीकरण विधि को कैसे बढ़ाया जाए।प्रमाणीकरण विधि ओवरराइड करना - Django व्यवस्थापक

उदा।

  • समाप्त हो रहा है पासवर्ड
  • विशेष पासवर्ड प्रारूपों
  • लंबाई आवश्यकताओं
  • आदि ...

यह साइट की दृश्यपटल के लिए बहुत सीधे आगे है, लेकिन क्या व्यवस्थापक पैनल के बारे में?


मुझे लगता है कि मैं, उपयोगकर्ता की प्रबंधक वस्तु ओवरराइड करना चाहिए के रूप में प्रमाणित शायद वहाँ रहता है। मुझे लगता है कि यह समझना मुश्किल है।

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

उत्तर

6

आप http://docs.djangoproject.com/en/dev/topics/auth/#authentication-backends में निर्देशों का पालन करके कस्टम प्रमाणीकरण बैकएंड बना सकते हैं।

class MyBackend: 
    def authenticate(self, username=None, password=None): 
     # Check the username/password and return a User. 

फिर settings.py में AUTHENTICATION_BACKENDS के लिए कक्षा जोड़ें: अनिवार्य रूप से, आप एक बैकएंड वर्ग एक authenticate विधि है कि पैदा करते हैं।

हालांकि इस प्रमाणीकरण के लिए है, तो आप सभी पासवर्ड सत्यापन चीजें आप एक पासवर्ड बदलें पृष्ठ पर एक उपयोगकर्ता पुनः निर्देशित करता है, तो पासवर्ड सही है लेकिन समय सीमा समाप्त, उदाहरण के लिए बस का उल्लेख कर सकता है। उपयोगकर्ता को सामान्य परिवर्तन पासवर्ड पृष्ठ पर निर्देशित करते समय क्या हो रहा है इसके बारे में संकेत देने के लिए messaging framework का उपयोग करने पर विचार करें।

+0

हाय आपने लगभग सबकुछ कवर किया है: हे यह इतना अच्छा जवाब है! बहुत बहुत धन्यवाद। – RadiantHex

+0

हाय मैं ऑथ बैकएंड को कार्यान्वित कर रहा हूं, मैं सिग्नल के बारे में उलझन में हूं। व्यवस्थापक के भीतर उचित सत्यापन लागू करने का कोई तरीका नहीं है? – RadiantHex

+0

@RadiantHex मैं django सिग्नल भाग के लिए क्षमा चाहता हूं। यह आपके मामले में लागू नहीं है, क्योंकि आप मॉडल से कच्चे पासवर्ड को नहीं पढ़ सकते हैं (इसे पहले से ही धोया गया है) और इसलिए आप अपना सत्यापन नहीं कर सकते हैं। एक कस्टम दृश्य में पासवर्ड पेज अपहरण के बारे में जॉर्डन का सुझाव बेहतर है। आपको केवल उन सभी पृष्ठों को हाइजैक करने की आवश्यकता है जो पासवर्ड बदल सकते हैं। एक और तरीका है [बंदर-पैचिंग] (http://stackoverflow.com/questions/192649/can-you-monkey-patch-methods-on-core-types-in-python) की 'set_password' विधि' का प्रयास करना है 'उपयोगकर्ता' मॉडल। –

1

आप पासवर्ड के लिए मान्यता मॉडल में बनाया जा चाहते हैं, तो आप शायद extend the django User model चाहता हूँ। बदल रहा है और पासवर्ड की स्थापना, तो बस (r'^admin/', include(admin.site.urls)) ऊपर प्रासंगिक यूआरएल डालने के लिए अपने स्वयं के विचारों का सृजन करके

  • ओवरराइड व्यवस्थापक पासवर्ड विकल्प:

    अन्यथा, आप निम्न कार्य कर सकते हैं। रेगेक्स (r'^admin/auth/user/(\d+)/password/', new_change_password) जैसा कुछ दिखाई देगा।

  • एक अलग मॉडल में पासवर्ड आयु का ट्रैक रखें और फिर जब वे समाप्त हो जाएंगे, तो यह समाप्त होने के बाद एक परिवर्तन पासवर्ड पर रीडायरेक्ट करें।
+0

आपके उत्तर के लिए हाय धन्यवाद! – RadiantHex

+0

हाय मुझे यह उत्तर वास्तव में और अधिक उपयोगी लगता है, क्या आपके पास पासवर्ड परिवर्तन दृश्य को देखने के तरीके को आगे बढ़ाने के बारे में कोई जानकारी है? – RadiantHex

+0

क्या आपका मतलब रीडायरेक्ट है? उपयोगकर्ता को परिवर्तन पासवर्ड पृष्ठ के लिए यूआरएल पर रीडायरेक्ट करने के लिए 'HttpResponseRedirect' का उपयोग कर सकते हैं। मुझे लगता है कि अगर आप django/contrib/auth के लिए urls फ़ाइल देखते हैं तो आप यह पता लगा सकते हैं कि कौन सा यूआरएल नाम उपयोग करना है। –

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