2013-09-06 7 views
8

रिटर्न मैं निम्नलिखित कोड का टुकड़ा है:Django प्रमाणित नहीं

user = User(username='[email protected]',email='[email protected]') 
user.set_password('pass') 
user.save() 
u = authenticate(username='[email protected]', password='pass') #this always returns None!!! 

समस्या है, यू हमेशा कोई नहीं है। मैंने अन्य स्टैक ओवरफ़्लो पोस्ट पर कोड नमूने का पालन किया है और इसे उपर्युक्त पंक्तियों तक सीमित कर दिया है।

क्या हो सकता है इसके बारे में कोई विचार?

+0

है? – mariodev

उत्तर

9

इस तरह रखो कुछ अपनी सेटिंग्स

#Authentication backends 
AUTHENTICATION_BACKENDS = (
     'django.contrib.auth.backends.ModelBackend', 
    ) 

या में अपने खातों के लिए userena उपयोग कर रहे हैं

#Authentication backends 
AUTHENTICATION_BACKENDS = (
    'userena.backends.UserenaAuthenticationBackend', 
    'guardian.backends.ObjectPermissionBackend', 
    'django.contrib.auth.backends.ModelBackend', 
) 
0

तुम क्यों इस तरह एक उपयोगकर्ता नहीं:

user = User.objects.create_user(username="whatever", email="[email protected]", password="password") 
user = authenticate(username="whatever",password="password") 
+0

धन्यवाद, एच एच एच। वह मेरा मूल कोड था। मैंने इसे वापस बदल दिया और अभी भी कोई महिमा नहीं। मुझे नीचे दिए गए उत्तर पर कोड पोस्ट करने दें ... –

+0

-1। ये गलत है। इस तरह पासवर्ड को सहेजा नहीं जाएगा, और हैश किए गए संस्करण के विरुद्ध चेक किए जाने पर मेल नहीं खाएगा। –

+0

डैनियल, मैंने इसका परीक्षण किया और यह पासवर्ड हैशिंग था। चाहे यह एक अलग पासवर्ड था, मैं कभी नहीं जानता, लेकिन यह निश्चित रूप से धोया गया था। मेरा मुद्दा था कि मैं प्रमाणीकरण बैकएंड सेटिंग –

0

निम्नलिखित को बदल दिया है। फिर भी कोई महिमा

email = "[email protected]" 
password = "pass" 
user = User.objects.create_user(email,email,password) 
u = authenticate(username=email, password=password) 
+1

को याद कर रहा था। मैं प्रमाणीकरण बैकएंड –

+1

के लिए सेटिंग खो रहा था क्या आप उस सेटिंग पर विस्तृत कर सकते हैं? मुझे लगता है कि मेरे पास एक ही समस्या हो सकती है – mgPePe

+0

कृपया ऊपर राममा का जवाब देखें। मैंने इसे जवाब के रूप में चिह्नित किया। –

1

दिलचस्प बात यह check_password यह सच है निम्नलिखित में प्रस्तुत करती है:

eml = "[email protected]" 
pw = "pass" 
uname = 'w2' 
user = User.objects.create_user(uname,eml,pw) 
user.save() 
log.debug("Password check passes?") 
log.debug(user.check_password(pw)) # Logs True!!! 
user = authenticate(username=uname, password=pw) 
1

settings.py में, जोड़ने

AUTH_USER_MODEL = your custom user class 

उदाहरण, यदि Django ऐप्लिकेशन का नाम आप कुछ कस्टम सेटिंग्स की क्या ज़रूरत है कार्यालय और कस्टम उपयोगकर्ता वर्ग फिर खाता

AUTH_USER_MODEL = 'office.Account' 
संबंधित मुद्दे