Laravel - Matar a sessão ao voltar pra página de login ou ao fechar a aba

para matar a sessão eu tenho a opção de sair do sistema. como mostra no print anexado.
porém eu percebi que quando o usuário sai sem apertar o botão de logout ele não mata a sessão.
eu queria matar a sessão quando o cara fechar a página ou voltar pra tela de login…
:confused:
image

Alguém?:sweat_smile:

Pergunta complicado responder porque tudo depende de como criou o login sem saber isso e como eu já sei que você alterou muitas coisas possa ser isso

Se o usuário fechar o browser inteiro, sem nenhum processo rodando no SO, a sessão deveria encerrar automaticamente.

Se estiver falando da aba, matar a sessão ao fechar a aba não é uma experiência boa pro usuário. Ele pode ter várias abas abertas do site e fechar uma delas. Mas se quiser, no browser tente usar o evento onbeforeunload.

Qual seria a dificuldade? No request que entra nessa página voce encerra a sessao.

utilizei esse método para finalizar {{Session::flush()}} porém não funciona.:confused:

existe alguma forma de executar esse evento que já existe do laravel de sair do sistema? pq quando eu clico nele tudo funciona perfeitamente.

Isso já não funciona? É só fazer o mesmo request feito nesse menu logout, chamando do lugar que quiser.

já tentei, porém não consigo executar essa mesma funcionalidade. analisar melhor aqui…

Posta o código desse menu.

    <div class="nav-side-menu">
        <div class="brand"><img width=40%  height=40% src="{{asset('imagens/logo-psicologia.png') }}"/><br>
        <span style="font-variant:small-caps;font-weight:bold;">{{ Auth::user()->username }} <b>|</b></span>
        <a style="color:red; text-decoration: none; font-weight:bold" href="{{ route('logout') }}"
            onclick="event.preventDefault();
            document.getElementById('logout-form').submit();">
            Sair 
        </a>
         <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
          @csrf
        </form>
        </div>
        
        <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menu-content"></i>
  
            <div class="menu-list">
      
                <ul id="menu-content" class="menu-content collapse out">
                    <li>
                      <a href="/dashboard"><i class="fa fa-tachometer-alt sidebar-icon"></i> Dashboard</a>
                    </li>
                    
                    <li  data-toggle="collapse" data-target="#CadPessoas" class="collapsed">
                        <a href="#"><i class="fa fa-life-ring fa-users"></i> Cadastros Pessoas<span class="arrow"><i class="fa fa-angle-down"></i></spam></a>
                    </li>
                    <ul class="sub-menu collapse" id="CadPessoas">
                        <li><a href="/ListaColaboradores" id="psicologo"><i class="fa fa-angle-right"></i> Psicólogos</a></li>
                        <li><a href="/ListaPacientes" id="pacientes"><i class="fa fa-angle-right"></i> Pacientes <small><i class="fa fa-external-link"></i></small></a></li>
                    </ul>
                    <li  data-toggle="collapse" data-target="#CadGerais" class="collapsed">
                        <a href="#"><i class="fa fa-life-ring fa-pen"></i> Cadastros Básicos<span class="arrow"><i class="fa fa-angle-down"></i></spam></a>
                    </li>
                    <ul class="sub-menu collapse" id="CadGerais">
                        <li><a href="/ListaTiposAtendimentos" id="tipoAten"><i class="fa fa-angle-right"></i> Tipos de Atendimentos</a></li>
                        <li><a href="/ListaSintomasQueixas" id="sinQuei"><i class="fa fa-angle-right"></i> Sintomas Queixas <small><i class="fa fa-external-link"></i></small></a></li>
                        <li><a href="/ListaSalasLocal" id="salas"><i class="fa fa-angle-right"></i> Salas <small><i class="fa fa-external-link"></i></small></a></li>
                    </ul>
                    <li>
                      <a href="#"><i class="fa fa-clipboard-list"></i> Marcação de Consultas</a>
                    </li>
                    <li  data-toggle="collapse" data-target="#relatorios" class="collapsed">
                        <a href="#"><i class="fa fa-chart-line"></i> Relatórios<span class="arrow"><i class="fa fa-angle-down"></i></spam></a>
                    </li>
                    <ul class="sub-menu collapse" id="relatorios">
                        <li><a href="#" id="conPsi"><i class="fa fa-angle-right"></i>Consultas Por Psicólogos</a></li>
                        <li><a href="#" id="conAte"><i class="fa fa-angle-right"></i>Tipo de Atendimento <small><i class="fa fa-external-link"></i></small></a></li>
                        <li><a href="#" id="relStatus"><i class="fa fa-angle-right"></i>Pacientes Por Status <small><i class="fa fa-external-link"></i></small></a></li>
                        <li><a href="#" id="historico"><i class="fa fa-angle-right"></i>Histórico do Paciente <small><i class="fa fa-external-link"></i></small></a></li>
                    </ul>
                    <li  data-toggle="collapse" data-target="#config" class="collapsed">
                        <a href="#"><i class="fa fa-cog"></i> Configurações<span class="arrow"><i class="fa fa-angle-down"></i></spam></a>
                    </li>
                    <ul class="sub-menu collapse" id="config">
                        <li><a href="/ListaUsuarios" id="usuario"><i class="fa fa-angle-right"></i>Usuários</a></li>
                        <li><a href="#" id="parametro"><i class="fa fa-angle-right"></i>Parâmetros do Sistema <small><i class="fa fa-external-link"></i></small></a></li>
                    </ul>
           
                </ul>
         </div>
    </div>

No href do link tem o endereço que faz o request do logout. Poste o código apontando o outro lugar que quer chamar essa funcionalidade.

eu não entendi direito o que vc quer…
mas seria o código da tela de login?

        <div class="container"><!--Início do Container-->
            <div class="d-flex justify-content-center h-100">
                <div class="card">
                    <div class="card-header">
                        <h3>Sistema de Gestão para Psicólogos</h3>
                    </div>
                    <div class="card-body">

                    <form  method="POST" action="{{ route('login') }} " ><!--Início do form-->
                    @csrf
                    
                        <div class="input-group form-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"><i class="fas fa-user"></i></span>
                            </div>
                            <input onkeypress="DefinirBgUsuario()" type="text" class="form-control" id="usuario" name="username" placeholder="Usuário" value="{{ old('login') }}">
                        </div>
                        <div class="input-group form-group">
                            <div class="input-group-prepend">
                                <span class="input-group-text"><i class="fas fa-key"></i></span>
                            </div>  
                            <input onkeypress="DefinirBgSenha()" type="password" class="form-control"  id="senha" name="password" placeholder="Senha">
                        </div>
                        <div class="form-group">
                            <button id="btn" type="submit" value="Entrar" onclick="ValidarLogin();" class="btn float-right btn-primary">
                            {{ __('Login') }}</button>
                        </div>
                             @if(Session::has('errors'))
                                <script>
                                   $(document).ready(()=>{
                                         ValidarLogin(1);
                                    })
                                </script>     
                            @endif
                    </form><!--Fim do form-->

                    </div>
                    <div class="card-footer">
                        <div class="d-flex justify-content-center links">
                            <a href="#">Esqueceu a sua senha?</a>
                        </div>
                    </div>

            </div>
        </div>

O que eu quero nao, o que voce quer, apontar onde voce quer encerrar a sessão, qual evento, seja no front ou no back.

eu queria fazer o seguinte, toda vez que entrar na tela de login eu queria verificar se existe uma sessão aberta, se existe finaliza-la.

Essa tela de login tem um request pro back responder essa página no browser, certo? Lá no back (onde você responde com a página), faz a mesma coisa que fez no logout.

Eu acho que esse problema só está acontecendo com você (tenho certeza), veja, o Framework, não tem falha nisso, para sair de um login de usuário é Auth::logout(); via documentação e bem explicado e você precisa fazer isso para que o sistema sai desse usuário. Vale lembrar que fechar o navegador e o usuário não ter mais validade é o padrão, mas, você mudou o sistema em outros post que você mesmo relatou, então, pode ser isso, muda em um lugar e não muda nos outros e você foi alertado que sem conhecimento fica complicado mudar aqui ou ali (veja não me leve a mau você quem fez isso).

O comportamente natural é assim, mas, se você mandar remember = true como último paramento do login faz com que o sistema só sai quando você utilizar Auth::logout(); e possa ser isso.

Como a gente não tem o código na integra, como a gente não sabe como você mudou, e já vi você fazendo Session::get('errors') sem necessidade nenhuma fica claro que o problema está no seu código e foi causado pela suas mudanças

Ratificando, espero que leve isso como lição, mexer hoje com Laravel está cada vez dificil, porque você tem preguiça de ler a documentação.

Nessa resposta tem como fazer a saída do usuário (Auth::logout();) e você pode ler na documentação de autenticação todo o processo. É bom ler porque o problema pode ser resolvido ai.

Porque ninguém consegue ajudar: porque o seu problema é oculto e até agora você não demonstrou subsídios para uma resposta ideal.

mas se vc fazer o teste com a forma de login padrão do laravel, vc vai perceber que quando vc volta pra tela de login sem ser pela opção de deslogar a sessão do usuário continua ativa.

Errado!

Quando você entra no login e o usuário está logado, existe um middleware que verificar se existe usuário logado e redireciona.

Veja você mexeu em pontos que não deveria que até mudou o comportamento da aplicação.

fiz o teste aqui agora, loguei no sistema e em seguida voltei pra tele HOME. dps disso cliquei em HOME e ele redirecionou pra dentro do sistema.
o que eu quero é simplesmente finalizar a sessão quando eu voltar pra HOME. atualmente só finaliza a sessão se o cara clicar em logout.

Simples quando entrar na rota de o comando Auth::logout()!

1 curtida