1
resposta

rota logout não servindo pra nada

Não sei no projeto de vocês, mas aqui no meu a rota logout não serve pra nada Toda vez que faço o login no projeto jogoteca e depois vou para rota logout, aparece a mensagem do logout realizado com sucesso mas depois quando eu vou para a página de cadastrar jogos aparece o formulário para adicionar um novo jogo direto, o certo seria ir para a página de login direto

@app.route('/logout')
def logout():
    session['usuario_logado'] == None
    flash('Logout efetuado com sucesso!')
    return redirect('/')
@app.route('/cadastro-jogos')
def cadastro():
    # protegendo a página de cadastro de jogos
    # só poderá adicionar mais jogos se estiver logado
    if 'usuario_logado' not in session or session['usuario_logado'] is None:
        return redirect('/login?proxima=cadastro-jogos')
    return render_template('cadastro-jogos.html',
    titulo = 'Novo Jogo')

Sempre que quero realmente fazer o logout, preciso ir nas configurações do navegador e limpar os dados de navegação

1 resposta

Olá Jonas, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Podemos implementar a aplicação jogoteca, criando uma rota no Flask que ficará responsável por limpar o cache do navegador, essa rota será acessada sempre que a roda logout for acessada.

Para isso utilizaremos a biblioteca Flask-Caching para gerenciar o cache e, em seguida, criar uma rota que apague todos os dados armazenados no cache.

Primeiramente, instale a biblioteca Flask-Caching executando o código abaixo no terminal aberto no seu projeto.

pip install Flask-Caching

Após a instalação, abra o arquivo jogoteca.py. Neste arquivo adicionaremos a importação da biblioteca flask-caching, criaremos a rota limpar_cache e modificaremos a rota logout fazendo com que esta última redirecione para a rota que limpa o cache.

  • Adicione o código abaixo antes da rota logout. Assim será definido a rota limpar_cache

      from flask_caching import Cache
    
      cache = Cache(app, config={'CACHE_TYPE': 'simple'})
      @app.route('/limpar_cache')
      def limpar_cache():
          cache.clear()
          print('Cache do navegador limpo com sucesso!')
          return redirect(url_for('index'))
  • Modifique a rota logout deixando como apresentada abaixo. Onde, ocorre o redirecionamento do usuário para a rota /limpar_cache após a definição do usuário na cessão como None

      @app.route('/logout')
      def logout():
          session['usuario_logado'] = None
          flash('Logout efetuado com sucesso!')
          return redirect(url_for('limpar_cache'))

Após as mudanças aplicadas, salve o arquivo jogoteca.py e execute-o. Loge na aplicação e acesse a página de logout. Logo após acesse a rota /novo e verifique se é pedido um novo login.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

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