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

Tentei proteger uma rota, mas não deu muito certo

Fiz o "/logout", coloquei a session na "/autenticar" e fiz a configuração para proteção da roda /novo que no meu caso é " / inserir" mas, mesmo logado, quando digito no navegador /novo, ele redireciona para a parte do login.

Segue o código:

@app.route("/")

def login():
    return render_template("login.html")





@app.route("/autenticar", methods=['POST'])

def autenticar():
    if 'mestra' == request.form['senha']:
        session['usario_logado'] = request.form['usuario']
        flash('logado com sucesso')
        return redirect('/lista')
    else:
        flash('Tente novamente')
        return redirect('/')




@app.route("/logout")
def logout():
    session['usuario_logado']=None
    flash(" Acabou de deslogar")

    return redirect('/')



@app.route("/inserir")

def inserir():

    if session['usuario_logado'] != None:        
        return render_template('novo.html', cadastro="Cadastrando Jogos")
    else:
        return redirect('/')





@app.route("/criar", methods=['POST',])

def criar():
    nome=request.form['nome']
    categoria= request.form['categoria']
    console= request.form['console']

    jogo=Jogo(nome, categoria, console)
    lista.append(jogo)

    return redirect('/lista')

@app.route("/lista")
def ola():

    return render_template('lista.html',titulo='Jogos Legais', jogos=lista)
3 respostas
solução!

Oiii Raul, tudo bem?

Acredito que isto esteja acontecendo porque você está salvando a session como: usario_logado e na rota de criar está verificando a session usuario_logado, ou seja, como não há essa session o valor dela é sempre None, por isso que independentemente de estar logado ou não, quando digitamos para ir para o /inserir é redirecionado para a tela de login.

Na rota /autenticar troque:

session['usario_logado'] = request.form['usuario']

Por:

session['usuario_logado'] = request.form['usuario']

Tente isso e me diga se obteve êxito.

Espero ter ajudado. Abraços e bons estudos!

Olá, deu cero. Obrigado. Só mais uma questão. Ainda não entendi bem o que é e para que serve uma SESSION do flask.

Raul, session é a palavra chave do Flask para que você defina uma sessão, ou seja, um intervalo de tempo em que você irá efetuar o login no servidor e fazer o logout dele e dentro dessa sessão, você pode armazenar dados, no caso do curso, armazenamos o nome do usuário, para que através disso saibamos se o usuário está logado ou não.