Warm tip: This article is reproduced from serverfault.com, please click

Django authenticate returning none but login works?

发布于 2020-12-02 21:47:59

When I run the below code, it prints "done." However, when I check if user is returning anything, it doesn't - it returns None. Is this a problem, if dj_login() is running without any errors?

def login(request):
    if request.method == 'POST':
        try:
            username = request.POST.get('username')
            password = request.POST.get('password')
            try:
                user = authenticate(request, username=username, password=password)

                dj_login(request, user, backend='django_auth_ldap.backend.LDAPBackend')
                messages.success(request, "You have been logged in.")
                print("done")
                return render(request, "app/login.html")
            except Exception as e:
                print(e)
                messages.error(request, "Failed to Login Errors: {}".format(e))
                return render(request, "app/login.html")

        except Exception as e:
            messages.error(request, "Failed to Login Errors: {}".format(e))
            return render(request, "app/login.html")

    return render(request, 'app/login.html')
Questioner
EpRa
Viewed
11
Chymdy 2020-12-03 05:52:35

You ought to check if the authentication returned an actual user or None. A simple if statement would do that for you.