Problema com Session

5 respostas
colored

Bom No sistema que eu to criando, o usuario tal faz o login blz, ai tem 1 lugarzinho la em cima q aparece o login dele… no caso neh o usuarioq está logado ao sistema…
Eu fui criar ontem um logout mas tipo n deu mto certo :/… qdo ele faz logout e vai pra pagina d login e se loga d novo da 1 errinho :X…
Tipo eh uma parada d phase e disso eu n manjo nd será q alguem pode me ajudar…

javax.servlet.ServletException: viewId:/login.jsf - View /login.jsf could not be restored.
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:270)
	org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)


root cause 

javax.faces.application.ViewExpiredException: viewId:/login.jsf - View /login.jsf could not be restored.
	com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:186)

Tipo os passos que eu usei pra criar essa sessão…

// Pra criar a sessão.
session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);

// Ai no Login qdo ele está correto.
session.setAttribute("user", usuario.getLogin());
Ele insere o Login na sessão..

// Pra Dar o Logout
public String logout(){
		session.invalidate();
		return "ok";
	}

Alguem pode me dar uma força. :X

5 Respostas

marcosharbs

vc está invalidando a sessão no logout

public String logout(){  
        session.invalidate();  
        return "ok";  
}

o logout seria apenas tirar o objeto usuario da sessão e redirecionar para página de login correto?
vc poderia fazer o seguinte:

public String logout(){  
        if(session.getAttribute("user") != null){
		session.removeAttribute("user");
	}
        return "ir_para_login";  
}
  • percebi que vc joga apena so login do usuario na sessao, vc poderia jogar o objeto usuario na sessao assim vc conseguiria recupera qq informacao do usuario logado
colored

Pois eh, eu tinha anotado num lugar aki q era pra por o objeto mas nem lembrei d mudar…

Mas c acha q com isso que vc fez resolve o problema???

marcosharbs

sim
eu tenho uma aplicação aqui que faço isso quando um logout
ai tem um filter pra nenhum usuario acessar se num tiver logado ou seja se num tiver um objeto usuario na sessao
e no logout removo esse cara da sessao entao num vai pode acessar se der o logout

o erro que esta ocorrendo provavelmente é pq vc ta dando um:

session.invalidate();
colored

Então… eu devo ta fazendo algo errado…
Tipo la em cima da pagina… eu coloco tipo

<h:outputText value="#{MbUsuario.usuario.login}" />

Ai qdo clico no link ele teria q sumir neh…
mas n sei o q eu faço… ele tiro da sessão tinha q sumir o nome dali…

marcosharbs

colored:
Então… eu devo ta fazendo algo errado…
Tipo la em cima da pagina… eu coloco tipo

<h:outputText value="#{MbUsuario.usuario.login}" />

Ai qdo clico no link ele teria q sumir neh…
mas n sei o q eu faço… ele tiro da sessão tinha q sumir o nome dali…

bem vc tiro o atributo usuário da sessão mas esse cara ai pelo oque vi ta vindo de um backing bean correto?
então provavelmente o seu atributo la no seu backing bean ainda está populado com o valor desatualizado

Criado 15 de outubro de 2009
Ultima resposta 16 de out. de 2009
Respostas 5
Participantes 2