Olá desenvolvedores, neste tutorial iremos fazer uma invalidação de sessão, o logout do usuário. Até momento em nossa aplicação quando há troca de usuários, o que fazemos é apenas o redirecionamento. Mas o que deveria ocorrer é uma invalidação de sessão.
Quando o usuário “loga” no sistema, uma consulta de usuário e senha é realizada no banco de dados. Uma vez que as credenciais do usuário sejam autenticadas ele é colocado em uma sessão aberta. Agora precisamos fazer o processo inverso, iremos remover o processo de validação do login para que possamos encerrar a sessão do usuário.
INVALIDANDO A SESSÃO
Na página de meu.xhtml, o template que criamos para evitar a repetição de códigos, no item de menu “Trocar usuário”, iremos chamar o método deslogar().
value=“Trocar o Usuário” action=“#{pessoaBean.deslogar}” style=“margin-left:1cm” />
No lado do servidor no ManagedBean criaremos o método deslogar(), que redicionará o usuário para a página de login index.jsf, porém, efetuando o logout do sistema.
Iremos proceder com as mesmas etapas de validação do login, no entanto, quando o fluxo de processamento chegar no getSessionMap ao invés de colocarmos o usuário em sessão, iremos encerrar a sessão aberta do usuário logado como o “remove”.
E então, utilizaremos o httpServletRequest que é quem nos dá o controle da sessão do usuário e traz informações como parâmetros de solicitação, cabeçalhos do HTTP, host, portas, contextos e outras. Assim, é por meio do httpServletRequest que iremos proceder com a invalidação da sessão do usuário.
httpServletRequest.getSession().invalidate();
EM POUCAS PALAVRAS
Neste tutorial implementamos a invalidação da sessão, isto é, quando o usuário deseja trocar de login é preciso realizar o logout do sistema. Desse modo removemos o atributo do usuário, e com o httpServletRequest a sessão é invalidada.
Dessa forma quando o usuário tentar acessar quaisquer páginas do sistema a partir da url – Uniform Resource Locator, após ter realizado a troca de usuário, ele não vai conseguir porque o sistema terá feito o logout, o que significa que a sessão que estava aberta foi encerrada, assim ele terá que logar novamente para obter acesso a página desejada.