Bom dia galera, estou com alguns problemas relacionados a tempo de sessao em JSF e preciso muito da ajuda de vcs.
Estou colocando um tempo para a sessao aspirar como mostrado abaixo: //web.xml
5
Quando a sessao aspira todos meus objetos ficam null, tudo ta blz é isso mesmo, mas como que eu posso fazer para que quando a sessao aspirar e o usuario tentar mexer no sistema abra entao novamente a tela de login para o usuario digitar novamente o nome e a senha.
Galera muito obrigado, feliz 2010.
Nesse caso crie um filter que faça essa validação para você!!!
Exemplo de filter q redireciona qdo sessão ñ é mais válida…
package myServlets;
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;
public class SecurityFilter implements Filter
{
public static final String loginPage = "LoginPage.html";
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("Filtrando");
if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
if (isSessionInvalid(httpServletRequest)) {
String timeoutUrl = httpServletRequest.getContextPath() + "/" + loginPage;
httpServletResponse.sendRedirect(timeoutUrl);
return;
}
}
filterChain.doFilter(request, response);
}
private boolean isSessionInvalid(HttpServletRequest httpServletRequest) {
boolean sessionInValid = (httpServletRequest.getRequestedSessionId() != null)
&& !httpServletRequest.isRequestedSessionIdValid();
return sessionInValid;
}
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Inicicando Sessão");
}
public void destroy() {
System.out.println("Sessão destruida!");
}
/**
* Utilizado para interceptar requisições para realizar um filtro de acesso a aplicação.
*
* @throws java.io.IOException
* @throws javax.servlet.ServletException
*
* @param <b>request </b> ServletRequest
* @param <b>response </b> ServletResponse
* @param <b>chain </b> FilterChain
*/
}
[quote=viniciusfaleiro]Exemplo de filter q redireciona qdo sessão ñ é mais válida…
[code]
package myServlets;
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;
public class SecurityFilter implements Filter
{
public static final String loginPage = “LoginPage.html”;
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("Filtrando");
if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
if (isSessionInvalid(httpServletRequest)) {
String timeoutUrl = httpServletRequest.getContextPath() + "/" + loginPage;
httpServletResponse.sendRedirect(timeoutUrl);
return;
}
}
filterChain.doFilter(request, response);
}
private boolean isSessionInvalid(HttpServletRequest httpServletRequest) {
boolean sessionInValid = (httpServletRequest.getRequestedSessionId() != null)
&& !httpServletRequest.isRequestedSessionIdValid();
return sessionInValid;
}
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Inicicando Sessão");
}
public void destroy() {
System.out.println("Sessão destruida!");
}
/**
* Utilizado para interceptar requisições para realizar um filtro de acesso a aplicação.
*
* @throws java.io.IOException
* @throws javax.servlet.ServletException
*
* @param <b>request </b> ServletRequest
* @param <b>response </b> ServletResponse
* @param <b>chain </b> FilterChain
*/
}
[/code][/quote]
Faltou a configuração do Web.xml :lol:
Eu nao estou sabendo fazer a chamada no web config, onde chamar o:
br.com.inloc.sessao.AuthorizationListener
Meu XML está assim:
<session-config>
<session-timeout>20</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>LoginPage.html</welcome-file>
</welcome-file-list>
<filter>
<filter-name>securityFilter</filter-name>
<filter-class>myServlets.SecurityFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>securityFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>securityFilter</filter-name>
<url-pattern>*.faces</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>securityFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>securityFilter</filter-name>
<url-pattern>*.*</url-pattern>
</filter-mapping>