por Ana Karla Amador Ribeiro Fujioka | 79.6k xp | 5 posts Analista de Negócio/CEO
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:
Faça seu login
Nome de usuário:
Senha:
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.