Possuo um sistema (JSF 2.0 (Mojarra), Jboss Seam(Weld), UrlRewriteFilter) de autenticacao e paginas(facelets).
Quando a sessao do usuario expira, teria que retornar para o login e apos autenticar iria para a pagina que o usuario estava.
Quando a sessão expira no JSF apresenta a excecao ViewExpiredException.
Primeiro tentei tratar com session. Criei uma classe que estende a ExceptionHandlerWrapper para tratar a excecao(ViewExpiredException), em que eu coloco as urls(anteriores) de acesso na session e tento buscar na classe(exception) mapeada. Porem, retorna nao consigo obter os atributos da session do usuario, apenas retorna null. Só consigo pegar os atributos na session através dos ManagedBeans. http://weblogs.java.net/blog/edburns/archive/2009/09/03/dealing-gracefully-viewexpiredexception-jsf2
Outra alternativa que vi seria utilizar client-side, mas a aplicacao JSF esta como server-side
Também eu poderia deixar o time-out da sessao ilimitado. Que não seria uma boa prática.
Tentei customizar a tela de login com um campo hidden, cujo valor requestScope[‘javax.servlet.forward.request_uri’], mas o mesmo retorna null
Se puderem me ajudar ficarei agradecido.
Att,
Diego
Não dá para usar filter ou um evento de phase listener que verificaria a tela a ser carregada.
De algum jeito deve dar para pegar se expirou a sessão, daí redirecionaria para a tela de login.
Até consigo enviar para a página de login se ocorrer a exception.
Utilizando filtro, listener ou ExceptionHandlerFactory.
Mas o problema esta posteriormente, se a pessoa logar ela tem que retornar para a pagina que ela estava no ato que expirou
Então, iso é um dos grandes problemas e também como trabalho com urls amigáveis utilizando o UrlRewriteFilter fica mais difícil ainda.
Comecei a fazer com session/cookie setando no urlRewrite e tentava buscar o atributo da session através de uma classe que trata a ViewExpiredException. Mas sempre retorna null.
Acredito que também daria para fazer por paramentro de request utilizando um filter, mas queiria a melhor solução.
Em relação a Spring Security eu trabalhei mais com autenticação com ROLE. Olhei rapidamente umas soluções e vi nesse no site abaixo,
mas nao resolveria