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

[Bug] A autenticação está redirecionando à página errada

Oi pessoal, tudo bem?

Minha rota de login e autenticação estão assim:

@app.route('/login')
def login():
    proxima = request.args.get('proxima')    
    return render_template('login.html', proxima=proxima)

@app.route('/autenticar', methods=['POST',])
def autenticar():
    usuario = Usuarios.query.filter_by(nickname=request.form['usuario']).first()

    if usuario:
        if request.form['senha'] == usuario.senha:
            session['usuario_logado'] = usuario.nickname
            flash(usuario.nickname + ' logado com sucesso ')
            proxima_pagina = request.form['proxima']
            return redirect(proxima_pagina)
            
    else:
        flash('Usuario não logado')
        return redirect(url_for('login'))

Após preencher o formulário de login, em vez de ser redirecionado à página inicial, ele é redirecionado à esta url: http://127.0.0.1:5000/None Na página aparece o seguinte texto:

Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.

Mas se eu tirar manualmente o 'None' da url, ele volta para página inicial logado certinho.

2 respostas
solução!

Olá! Como vai?

Analisando o trecho de código que você compartilhou e fazendo um teste com uma versão do projeto, não tive nenhum problema ou identifiquei que poderia causar esse problema.

O que me faz pensar que o seu problema está localizado no Template login.html já que essa página faz a chamada da rota de autenticação. Então peço que verifique se o formulário presente nesse arquivo está exatamente assim:

    <form method="POST" action="{{ url_for('autenticar') }}">
        <input type="hidden" name="proxima" value="{{ proxima or url_for('index') }}">
        <p><label>Nome de usuário:</label> <input class="form-control" type="text" name="usuario" required></p>
        <p><label>Senha:</label> <input class="form-control" type="password" name="senha" required></p>
        <p><button class="btn btn-primary" type="submit">Entrar</button></p>
    </form>

Caso mesmo verificando você não consiga resolver a sua situação, seria legal que você compartilhasse todo o seu projeto, para que assim eu possa fazer testes. Recomendo que se o GitHub ou Drive do Google como meio de envio.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Agora percebi que o value do input tipo hidden estava errado, só coloquei '{{ proxima }}' em vez de '{{ proxima or url_for('index') }}'. O problema já está resolvido.