Como efetuar logout usando VRaptor 3 [Resolvido]

6 respostas
Guevara

Bom dia pessoal!
Pesquisei no GUJ como fazer logout da aplicação usando VRaptor3 mas as dicas que achei não funcionaram:

HttpSession session;

public void logout() {  
		if(session != null) { 
		  session.invalidate(); 
                  //result.redirectTo(IndexController.class).index();
		  result.use(Results.logic()).redirectTo(IndexController.class).index();
		 }		
}

Se eu fizer desta forma recebo o erro:

The requested resource (/JMovie/WEB-INF/jsp/login/logout.jsp) is not available.

Na verdade quero apenas que dê o logout no usuário e retorne para a Index e não para uma pagina logout.jsp, que aliás, nem existe.

Abraço!

6 Respostas

Lavieri

la do seu outro post

@Component
@SessionScoped
public class UsuarioLogado {
	     private Usuario usuarioLogado;
	     
	     public void efetuaLogin(Usuario usuario) {
	         this.usuarioLogado = usuario;
	     }
	     public Usuario getUsuario() {
	         return this.usuarioLogado;
	     }
	     
	     //adiciona isso
	     public void logout() {
	         this.usuarioLogado = null;
	     }
	     
	     public boolean isLogged() {
	     	 return this.usuarioLogado != null;
	     }
}

portanto basta colocar

public void logout() {    
           usuarioLogado.logout();
                   //result.redirectTo(IndexController.class).index();  
           result.use(Results.logic()).redirectTo(IndexController.class).index();  
          }        
 }
Guevara

Resolvido!
Obrigado pela dica Lavieri, eu pensei que era pra pegar a session do usuário e finalizar lá no LoginController apenas, fuçando nos métodos têm até métodos “disconnect”, “reconnect”, “close” e “isOpen”, ai estava tentando com eles usando a Session pra ver se conseguia deslogar.
Fiz desse jeito que vc postou e rodou belezinha.
Abraço!

G

Você está confundindo http-session com hibernate-session.

A session que você usa na web é HttpSession e fica no pacote javax.servlet.http.

Guevara

É verdade Garcia, confundi as Sessions eu estava tentando deslogar sessão web usando a do hibernate. O.o
Obrigado pelas dicas.
Abraço!!

G

Mesmo assim estou invocado com aquele seu erro do primeiro post.

Pelo que noto você tem um IF para saber se a session é nula. Uma session nunca é nula, então creio que você não esteja injetando ela no construtor do seu controller, estou certo?

Penso assim porque para o vr3 fazer forward para WEB-INF/jsp/login/logout.jsp só se a session for nula e o result não cair no esult.use(Results.logic()).redirectTo(IndexController.class).index();

[edit] Falha minha, o lavieri já havia corrigido isso, hehe. :oops:

Lavieri

garcia-jj:
Mesmo assim estou invocado com aquele seu erro do primeiro post.

Pelo que noto você tem um IF para saber se a session é nula. Uma session nunca é nula, então creio que você não esteja injetando ela no construtor do seu controller, estou certo?

Penso assim porque para o vr3 fazer forward para WEB-INF/jsp/login/logout.jsp só se a session for nula e o result não cair no esult.use(Results.logic()).redirectTo(IndexController.class).index();

[edit] Falha minha, o lavieri já havia corrigido isso, hehe. :oops:

usa o meu plug-in

=x uuhuhhu vai nova versão hoje, depois que eu voltar…

Criado 23 de março de 2010
Ultima resposta 23 de mar. de 2010
Respostas 6
Participantes 3