Cursos / Informática para Internet / Desenvolvimento Web I / Aula

arrow_back Aula 04 - Trabalhando com sessões

Finalizando sessões

Uma vez que uma sessão é aberta, existem algumas formas de fazer com que a mesma seja finalizada. A primeira forma de se fazer isso é reiniciando o servidor. Caso isso ocorra, todos os objetos sessão serão perdidos. A reinicialização do sistema não é frequente, na prática, visto que reiniciá-los quer dizer deixar os usuários sem poder usar o sistema durante um certo período de tempo (tempo de reinicialização).

Uma segunda forma de se finalizar uma sessão é através do método invalidate() da classe HttpSession. Esse método é utilizado para liberar o objeto sessão do servidor (encerrar a sessão) e descartar todo o seu estado (atributos). Essa forma de se liberar a sessão é geralmente utilizada quando se tem sistemas de autenticação, no qual o usuário realiza uma ação solicitando essa ação (exemplo: logout do usuário). Em um sistema bancário, por exemplo, ao terminar suas operações, um usuário deve clicar na opção de sair do sistema, encerrando assim sua sessão. Uma outra opção é remover o atributo USUARIO da sessão usando o método removeAttribute() de HttpSession, mas o invalidate() é mais indicado (por questões de segurança) se você não quer mais guardar informações sobre o usuário, já que ele remove o objeto sessão todo, e não apenas um de seus atributos.

Por fim, a terceira forma de encerrar uma sessão é o chamado timeout de sessão. O termo timeout é utilizado para indicar que um determinado tempo de sessão inativa foi alcançado. Por exemplo, um timeout de 20 minutos quer dizer que, se o usuário relativo a essa sessão não acessar o sistema por mais de 20 minutos, a sessão será descartada automaticamente pelo servidor. Esse recurso é importante, já que às vezes acessamos um sistema web através de computadores compartilhados. Usuários que acessam contas bancárias, por exemplo, devem ter sua sessão automaticamente expirada (liberada) em torno de 7 minutos de inatividade. Dessa forma, se o usuário for embora e esquecer o sistema aberto em um computador compartilhado, uma pessoa mal-intencionada que chegue 10 minutos depois não vai poder acessar a conta do usuário do banco, pois a sessão já vai ter expirado. O valor do timeout de uma sessão pode ser configurado pelo método setMaxInactiveInterval(), o qual recebe um valor inteiro representando o tempo de timeout em segundos.

Versão 5.3 - Todos os Direitos reservados