[Resolvido]Adicionar "Manter-me Conectado"

Boa tarde pessoal,

estou com uma dúvida, alguém já viu aqueles sites que tem uma checkbox e do lado um “Mantenha-me Conectado” ? Então, eu estou desenvolvendo uma aplicação utilizando o APache Tomcat… MySQL, JAVA (JDBC + SEVLET)… Gostaria de saber se alguém sabe de alguma dica referente a esta função de manter o usuário conectado.

Exemplo: O Usuário faz o login e depois de 30 minutos a sessão dele é expirada e ele tem que re-fazer seu login…

Alguém sabe me dizer como eu deixo o login eterdo do usuário, até que ele clique em DESLOGAR ou feche o navegador, é claro… rsrsrs

Muito obrigado, aguardo resposta.

eu nunca cheguei a fazer isso, mas pela descrição que você deu acho que você pode verificar, caso o check box esteja preenchido você deve obter a sessão deste usuário e chamar o método setTimeout dela passando um número negativo (se você quiser que ela nunca expire) ou o tempo que você deseja que ela demore. veja

Eu já vi isso mas sendo como cookie.

A aplicação salvaria um cookie com alguns parâmetros dizendo, por exemplo, se ele fez o login com sucesso sendo que essa informação estaria criptografada.

Com isso, ao receber o request você iria procurar o cookie e ver se a pessoa fez o login.

E seria uma boa tb colocar uma data de validade no cookie (assim como o gmail).

como o amigo jakefrog disse eu tbm só vi isso sendo feito via cookie , nele pode conter o id do usuario ai vc recria a seção assim que o usuario entra na pagina.

isso se nao me engano pode ser criado por filter que verifica a existecia do cookie e direciona para a pagina solicitada caso exista !

Muito obrigado menor_abandonado !!! uhuhuh me ajudou…

Consegui fazer com setMaxInactiveInterval()… é só eu dizer que se o checkbox estiver selecionado mando o setMaxInactiveInterval(-1), ai ele fica infinito a session e tals…

Obrigadoooo !!!

:wink:

[RESOLVIDO]

Mesmo com sua dúvida já respondida, deixo aqui pra posteridade:

O Spring Security tem essa funcionalidade já embutida. E é um dos principais frameworks no quesito segurança de aplicações web.

[]'s

Muito obrigado por responder e falar sobre o maravilhoso SPRING… só que estou fazendo uma aplicação utilizando SERVLET + JSP… e para utilizar SPRING, teria que refazer tudo, pois tem que mapear todo o SPRING… imagina… rsrsrs

Muito boa observação, SPRING é uma mãe.

:smiley:

Obrigado.

Mesmo com sua dúvida já respondida, deixo aqui pra posteridade [2]:

Imagine se todos os usuários da sua aplicação deixarem a opção manter conectado marcadas: Quantas sessões ficarão abertas no seu servidor? Quantos objetos haverá dentro de cada sessão? Seu servidor suportará essa carga?

Cuidado com essa abordagem, ela pode detonar seu servidor.

E acrescentando ao que o jakefrog disse, uma boa alternativa para gerenciamento de sessões usando tomcat pode ser armazená-las em um Memcached ou coisa assim. Nesta thread do stack overflow tem alguns links que valem a pena ser vistos nesse sentido.

Só pra deixar registrado por aqui :wink:

eu tinha pensado em cookie, mas ele disse que deveria deslogar caso a pessoa feche o browser, e o cookie é mantido em caso do fechamento do browser (a menos é claro que a pessoa configure o browser para excluir os temporarios no fechamento do browser).

quanto a sessão pesar, a sessão não é pesada, ela fica pesada se você encher ela de coisa, requisito deste tipo (manter o usário logado) guardando o que tiver que guardar assim digamos “stateless”, não tem problema nenhum…

[quote=maior_abandonado]eu tinha pensado em cookie, mas ele disse que deveria deslogar caso a pessoa feche o browser, e o cookie é mantido em caso do fechamento do browser (a menos é claro que a pessoa configure o browser para excluir os temporarios no fechamento do browser).

quanto a sessão pesar, a sessão não é pesada, ela fica pesada se você encher ela de coisa, requisito deste tipo (manter o usário logado) guardando o que tiver que guardar assim digamos “stateless”, não tem problema nenhum…[/quote]
Concordo com você, só pesa de acordo com o fato da quantidade de objeto lá dentro.
Sempre foi fácil adicionar objetos dentro da sessão, e muitas pessoas usam esse recurso sem pensar lá na frente.

Por isso deixei as perguntas. Caso alguém opte pela mesma escolha que tome cuidado com sessão.

Um exemplo clássico disso acontecer é utilizar ManagedBean com SessionScoped.