Olá. Estou seguindo o "Mãos na massa: autorização de usuários" da aula 06. Quando tento acessar a página novo, sou redirecionado para a página de login, faço o login com sucesso e a página novo é exibida. Acompanhado o console, vejo que o Flask recebe a requisição POST, como está configurado no formulário da página de login.
Quando tento fazer o login diretamente, assim que rodo a aplicação, quando envio os dados de login para a rota '/autenticar' aparece a tela de erro "Method Not allowed". Quando mudo a rota para '/novo', por exemplo, a página novo é exibida e aparece a mensagem de que o usuário foi logado com sucesso. Vejo no terminal que foi enviada uma requisição GET para o Flask. Não sei o que está acontecendo. Pode me ajudar? Segue os prints do código e do console.
@app.route('/novo')
def novo():
if 'usuario_logado' not in session or session['usuario_logado'] == None:
return redirect('/login?proxima=novo')
return render_template('novo.html', titulo='Novo jogo')
@app.route('/login')
def login():
proxima = request.args.get('proxima')
return render_template('login.html', proxima=proxima)
@app.route('/autenticar', methods=['POST',])
def autenticar():
if 'mestra' == request.form['senha']:
session['usuario_logado'] = request.form['usuario']
flash(request.form['usuario'] + ' logou com sucesso!')
proxima_pagina = request.form['proxima']
return redirect('/{}'.format(proxima_pagina))
else:
flash('Não logado, tente novamente!')
return redirect('/login')
Em login.html temos:
<h1>Faça seu login</h1>
<form method="POST" action="/autenticar">
<input type="hidden" name="proxima" value="{{ proxima or '/' }}">
<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>
Quando rodo a aplicação do início e vou para a rota de login, as mensagens no console que aparecem na sequência são as seguintes:
127.0.0.1 - - [28/Jun/2021 00:58:11] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [28/Jun/2021 00:58:22] "GET /login HTTP/1.1" 200 -
127.0.0.1 - - [28/Jun/2021 00:58:35] "POST /autenticar HTTP/1.1" 302 -
127.0.0.1 - - [28/Jun/2021 00:58:35] "GET /autenticar HTTP/1.1" 405 -
É como se tívessemos duas requisições em seguida, uma POST (ao que parece o usuário é logado na sessão) e uma GET (aparece o erro no navegador "Method not allowed"). Mas é só mudar a rota, por exemplo, para '/novo' ou '/' que a página é exibida e aparece a mensagem flash informando que o usuário foi logado.
Tomara que consigam me ajudar. Agradeço.