Olá pessoal.
Estou com uma dúvida acho que bem tola.
Por exemplo, no meu web.xml tenho configurado o seguinte:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Minha duvida é:
Esse timeout acontece se a sessão permanecer inativa durante 30 minutos ou ela expira a cada 30 minutos?
Obrigado
Olá,
Se ela estiver inativa a 30 minutos, ou seja se não houverem requisições em um período de 30 minutos.
[ ]'s
Cara, tenho mais uma dúvida.
Configurei para 30 minutos a session-timeout.
Quando passa 30 minutos de inatividade, a sessão expira, a view fica aberta mas não realiza nenhuma ação.
Essa view possui componentes Primefaces.
O scopo é ViewScope.
Gostaria que quando a sessão estiver expirada, redirecionasse para a pagina de login novamente. (Isso somente nao funciona quando tenho componentes primeface na view)
Como posso resolver isso?
Olá,
Você pode conseguir isso com um filtro.
Por exemplo, criar um Filter que esteja mapeado para todas as páginas que você precisa de login, esse filtro verificaria se existe uma sessão e caso ela não existisse direcionaria para sua página de login.
[ ]'s
Ok, entendi. Obrigado pela resposta.
Como sou novo na tecnologia JSF, tu terias algum material ou tutorial de implementar esse filtro?
Olá,
É algo simples, aqui tem alguns exemplos:
Se ainda precisar de ajuda com o Filtro, fique a vontade para perguntar.
[ ]'s
Obrigado Everton
Vou estudar esse link que tu enviou e se tiver alguma dúvida, volto a perguntar.
Muito Obrigado
Everton, estou novamente com problemas.
Segui o link que me enviou.
Implementei o seguinte filter:
package br.com.maryjane.web.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionFilter implements Filter {
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpSession session = ((HttpServletRequest) request).getSession(false);
if (session != null && !session.isNew()) {
chain.doFilter(request, response);
} else {
((HttpServletResponse) response).sendRedirect("/PedidoMJ/erro/sessaoExpirada.jsf");
}
}
@Override
public void init(FilterConfig config) throws ServletException {
}
}
Porem estou com um erro: Esta página da web tem um loop de redirecionamento.
Como faço pra resolver?
Olá,
Como está o seu deployment descriptor (web.xml)?
Acho que o loop acontece pois você deve estar aplicando o filtro na sua página de login.
[ ]'s
Exatamente isso.
Corrigi e funcionou.
Obrigado