Redirecionar para tela de login quando session expirar

6 respostas
alextecnico55

Num sei se usei o termo correto no Título…mas alguem por favor me ajude…To trabalhando num projeto de Integração Corporativa. Quando o usuario entra com login e senha eu pego seu Codigo e coloco na session até aí tudo bem. Minha Session é de 30 minutos. Após este tempo inativo se o usuário for tentar fazer qualquer coisa q use meu servlet eu preciso q a pagina seja redirecionada para tela de login.

Tentei ser o mais claro possível. Vi alguns tópicos no forum mas nenhum me foi o bastante claro.
Se alguem puder me ajudar agradeço.

6 Respostas

foxpv

Sugestão,
Você pode implementar um filter, aí nesse filter verificar se o session está expirada, se tiver vc redireciona pra página de login.

wbdsjunior

como o foxpv disse, você pode criar um filter... mais ou menos assim:

package tralala

import java.io.IOException;

import javax.servlet.*;
import javax.servlet.http.*;

public class SessionFilter implements Filter {
    public void init(FilterConfig config) {
    }

    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest)request;

        try {
            if (!httpRequest.isRequestedSessionIdValid()) {
                HttpServletResponse httpResponse = (HttpServletResponse)response;
                httpResponse.sendRedirect(httpRequest.getContextPath() + "/login.jsp");
            } else {
                chain.doFilter(request, response);
            }
        } catch (Exception e) {
            HttpServletResponse httpResponse = (HttpServletResponse)response;
            httpResponse.sendRedirect(httpRequest.getContextPath() + "/erro.jsp");
        }
    }

    public void destroy() {
    }
}
e o web.xml fica assim:
<filter>
    <filter-name>sessionFilter</filter-name>
    <filter-class>tralala.SessionFilter</filter-class> 
</filter>

<filter-mapping>
    <filter-name>sessionFilter</filter-name> 
    <url-pattern>/paginas/*</url-pattern>
</filter-mapping>
ainda dá para melhorar...

abraço.

alextecnico55

wbdsjunior, me desculpa o incomodo cara mas é q nunca precisei utilizar filter intão nunca criei, por isso to tendo algumas dificuldades:

neste trecho no XML :
[code] <url-pattern>/paginas/*</url-pattern>[code]

devo o que devo colocar especificamente é nome da página de login.jsp?

muito obrigado cara

alextecnico55

Outra dúvida wbdsjunior vou ter q acrescentar alguma coisa nas minha JSPs? pra elas passarem por esse filter?

wbdsjunior

alextecnico55:
neste trecho no XML :

&lt;url-pattern&gt;/paginas/*&lt;/url-pattern&gt;

devo o que devo colocar especificamente é nome da página de login.jsp?


Aqui vai o “diretório” das suas páginas (jsp, html).

Não, não… todas as páginas que estiverem no diretório acima passarão pelo filtro.
Se você quiser que apenas os JSPs sejam filtrados, coloque:

&lt;url-pattern&gt;*.jsp&lt;/url-pattern&gt;

e pos aí vai…
Você também pode colocar mais de uma url-pattern.

Atenção! Sua página de login não pode estar nesse diretório, senão ela também será verificada… e como o usuário ainda não fez o login, não existe uma sessão válida.

Abraço.

P.s.: Peço desculpas se disse alguma besteira.

alextecnico55

Cara brigadão pela ajuda aí vou tentar aki…vlw

Criado 12 de novembro de 2008
Ultima resposta 14 de nov. de 2008
Respostas 6
Participantes 3