Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Desenvolvendo Java Web com VRaptor 4 - Logoff

Minha dúvida aqui é como eu faria uma especie de logoff desse meu sistema eu fiz da seguinte forma

criei um método desloga na classe UsarioLogado que nada mais que seta meu this.usuario = null;

mas acredito que essa não a melhor forma de usar, já que vi em outros cursos aqui trabalhando com sessões onde eu simplesmente cortava essa sessão ou tirava esse cookie da sessão atual, como eu faria isso nesse meu projeto?

8 respostas

sim, está é a forma, pois a classe UsuarioLogado funciona como sessão quando anotado com @SessionScoped

Como faria para "cortar" essa seção então? Para que eu tivesse que me re-logar novamente no sistema?

cria um método no controller que chama o desloga.

    @Get("/logout")
    public void logout() {
        UsuarioLogado.desloga();
    }

Então isso eu já fiz, eu queria saber como tira a sessão, sem chamar o método que seta o usuarioLogado = null!

Com o vraptor esta é a melhor forma

Ou você pode usar o httpSession.invalidate()

Não funcionou desse jeito, porque eu tive que definir um objeto HttpSession session fiz ele injetado no construtor e ai no método fiz session.invalidate();

e me retornou esse erro

type Exception report

message java.lang.IllegalStateException: Cannot create a session after the response has been committed

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.IllegalStateException: Cannot create a session after the response has been committed
    br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:120)

Precisamos partir do momento em que defino na classe Usuario Logado o @SessionScoped ou seja esse objeto vale por uma sessão, precisamos nessa caso fechar essa @SessionScoped ...

solução!

Cara por que você não quer usar usuarioLogado = null; ? Isto é o mais coereto com VRaptor.

Bom acho que é isso mesmo, foi a forma mais fácil e a correta mesmo, fazer outros modos deve ser reinventar a roda, valeu!!!