Olá gujeiros tenho algumas duvidas sobre Filtro e vou postar aqui.
Qual é a função real do filtro:
1º Não permitir q o usuário acesse as telas pela URL ou não possa passar as telas através das setas do browser?
2º Não permitir que o usuario possa usar o sistema sem logar?
3º Qual seria a verdadeira tarefa do filtro?
Li o tutorial do Guj mesmo assim não ficou claro.
Agora segue mas outra duvida:
Tenho uma classe que implementa a interface Filtro, só que ela não está fazendo nada. Esta classe já existia neste sistema que trabalho.
Ex: se eu parar o tomcat e restartar novamente ele ainda continuará logado. Sem falar q acesso o browser atravers de seta do browser e url.
Segue meu código:
[code]public class FiltroAutenticacao implements Filter {
public void destroy() {
System.out.println(“Finalizando a aplicacao web…”);
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String temp = httpRequest.getRequestURL().substring(httpRequest.getRequestURL().toString().toUpperCase().indexOf("NOMESISTEMA"));
String requestedURL = temp.substring(temp.indexOf("/") + 1);
if (requestedURL.indexOf("css/") == 0
|| requestedURL.indexOf("js/") == 0
|| requestedURL.indexOf("img/") == 0
|| requestedURL.indexOf("images/") == 0
|| requestedURL.indexOf("usuarioautentica") == 0
|| requestedURL.equals("usuariologar")) {
chain.doFilter(request, response);
return;
} else {
if (httpRequest.getSession() != null
&& httpRequest.getSession().getAttribute("idUsuario") != null) {
if (requestedURL.equals("index.jsp") || requestedURL.indexOf("login") == 0) {
chain.doFilter(request, response);
return;
}
/**
* ************** A U T E N T I C A Ç Ã O ********************
* Valida a autorização de execução dessa classe entrada: A
* sessão gerada pelo servlet e o nome do servlet ou método ex:
* ..servletCadastrado("nome_da_sessao","label_de_controle")
*/
Connection con = null;
try {
con = Pilha.getConexao();
} catch (SQLException e) {
return;
}
String naoautorizado = "/naoautorizado";
boolean autorizado = false;
try {
autorizado = PerfilServletDAO.obterInstancia().servletCadastrado(httpRequest.getSession().getAttribute("sistema").toString(),
con, httpRequest.getSession().getAttribute("perfil").toString(),httpRequest.getServletPath().substring(1).trim());
con.close();
} catch (SQLException e) {
Log.getInstance().doLog(
this.getClass().getName() + ": " + e.getMessage());
}
if (!autorizado) {
RequestDispatcher naoAutorizado = request.getRequestDispatcher(naoautorizado);
naoAutorizado.forward(request, response);
return;
} else {
chain.doFilter(request, response);
}
/************* F I M A U T E N T I C A Ç Ã O *********************/
} else {
if (requestedURL.length() > 0 && requestedURL.indexOf("login") == 0) {
httpRequest.setAttribute("mensagem", "Usuário não autenticado ou sessão expirada.");
}
httpRequest.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}
public void init(FilterConfig arg0) throws ServletException {
System.out.println("Inicializando a aplicacao web VEPCNJ...");
}[/code]
Também fiquei com duvida sobre como deve ficar meu web.xml.
Fiz da seguinte forma:
[code]
FiltroAutenticacao
tj.api.autenticacao.filtro.FiltroAutenticacao
<filter-mapping>
<filter-name>FiltroAutenticacao</filter-name>
<url-pattern>/usuariologar</url-pattern>
</filter-mapping>[/code]