Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

user = authenticate( ) Sempre retorna None.

Olá, segui os passos descritos na aula, porém o usuário não autentica. coloquei um print como abaixo:

if User.objects.filter(email=email).exists():
            nome = User.objects.filter(email=email).values_list('username', flat=True).get()
            user = authenticate(request, username=nome, password=senha)
            print('email existe', nome, senha, user)

que retornou:

email existe thiago2 123456 None

Gostaria de uma ajuda para entender onde está o erro.

Obs. as senhas estão corretas.

6 respostas

Olá Thiago, conseguiu resolver? Meu código também está dando este erro.

Como você criou esse usuário thiago2 e senha 123456?

O Django ele criptografa a senha quando você cria um novo usuário. Se você criou diretamente no banco de dados e adicionou uma linha na tabela colocando a senha 123456... não vai funcionar.

Fala o seguinte teste: Crie um usuário pelo django admin com a senha 123456 e depois tente efetuar o login novamente.

Oi Thiago, consegui resolver. Na página de template de login, o nome do parâmetro do formulário da senha é 'senha', e na minha função login em views o método request.POST.get tentava pegar o parâmetro 'password', e por isso retornava NoneType. Segue abaixo como ficou o meu código:

def login(request):
    if request.method == 'POST':
        email = request.POST.get('email')
        senha = request.POST.get('senha')
        if User.objects.filter(email=email).exists():
            nome = User.objects.get(email=email).username
            user = auth.authenticate(username=nome, password=senha)
            print(user, nome, senha)
            if user is not None:
                auth.login(request, user)
                print('Login realizado com sucesso')
                return redirect('dashboard')
    return render(request, 'usuario/login.html')

Na hora de postar a resposta minha página travou e acabei postando várias vezes o mesmo conteúdo. Não encontrei opção de apagar, então, por favor, peço que algum ADM apague este post.

Na hora de postar a resposta minha página travou e acabei postando várias vezes o mesmo conteúdo. Não encontrei opção de apagar, então, por favor, peço que algum ADM apague este post.

solução!

Ola, nesse caso, ao revisar o código, verifiquei que tinha um erro na criação do usuário. Depois de corrigido, funcionou normalmente.

Obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software