2017-09-17 1 views
1

Ich versuche, Login-Seite mit django Authentifizierungssystem unten ist die AussichtWarum ist die Benutzerauthentifizierung nicht erfolgreich?

... 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('invoices.urls')), 
    url(r'^todos/', include('todos.urls')), 
    url(r'^accounts/login/$', todos.views.login, name='login'), 
    url(r'^accounts/auth/$', todos.views.auth_view, name='auth_view'), 
    url(r'^accounts/logout/$', todos.views.logout, name='logout'), 
    url(r'^accounts/loggedin/$',todos.views.loggedin, name='loggedin'), 
    url(r'^accounts/invalid/$', todos.views.invalid_login, name='invalid_login'), 

] 

enter image description here

from django.contrib import auth 
def auth_view(request): 
    username = request.POST.get('username','') 
    password = request.POST.get('password','') 
    print request.POST 
    user = auth.authenticate(username=username, password=password) #returns user object if match else None 
    if user is not None: 
     auth.login(request, user) #make user status as logged in now using django login function 
     return HttpResponseRedirect('/todos') 
    else: 
     return HttpResponseRedirect('/accounts/invalid') 

login.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Login page</title> 
</head> 
<body> 
<h2>login page</h2> 
<hr> 
<form action="/accounts/auth/" method="post">{% csrf_token %} 
    username: <input type="text" name="username" value="" id="username"><br> 
    password: <input type="password" name="password" value="" id="password"><br> 
    <input type="submit" value="Login"> 

</form> 

</body> 
</html> 

urls.py zu bauen Die var iable user gibt None zurück, auch wenn der Benutzer/Passwort korrekt ist. Wenn ich diese Zeile user = auth.authenticate(username=username, password=password) zu tatsächlichen Benutzer und Passwort ändern z. user = auth.authenticate(username="peter", password="[email protected]$w0rD275") ist es erfolgreich angemeldet

Kommandozeile aus

setzen
>>>result=auth.authenticate(username='admin', password='adkd92') 
>>>print result 
None 
>>>result=auth.authenticate(username='admin', password='admin123') 
>>>print result 
admin 
+0

Haben Sie ein Formular oder ist es nur ein Beitrag, den Sie senden? Ich meine eine AuthForm von Django oder was auch immer? Haben Benutzername und Passwort einen Wert? Existieren sie in db? – Bestasttung

+0

Ja, der Benutzer/Pass existiert in der Django Admin-Datenbank. –

+1

Wenn Sie die Anfrage bekommen. POST.get ('Passwort', ''), was ist der Wert? ist es ein klares Passwort oder ein Hashed? – Bestasttung

Antwort

1

Vielleicht haben Sie einen einfachen Tippfehler haben, haben Sie zusätzliche Komma , am Ende der folgenden Zeilen:

username = request.POST.get('username',''), # <--- 
password = request.POST.get('password',''), # <--- 

es entfernen und es sollte in Ordnung sein, denke ich.

+0

ich entfernte die Kommas, aber es gibt immer noch keine zurück, wenn ich den 'user' –

+0

drucke Verwenden Sie benutzerdefinierte Benutzermodell oder die Standard? –

+0

ich benutze django admins default '" user "' –

Verwandte Themen