Filtro

0 respostas
anderson.bonavides

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:

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...");
	}

Também fiquei com duvida sobre como deve ficar meu web.xml.

Fiz da seguinte forma:
<filter>
		<filter-name>FiltroAutenticacao</filter-name>
		<filter-class>tj.api.autenticacao.filtro.FiltroAutenticacao</filter-class>
	</filter>
	
	<filter-mapping>
		<filter-name>FiltroAutenticacao</filter-name>
		<url-pattern>/usuariologar</url-pattern>
	</filter-mapping>
Criado 3 de julho de 2009
Respostas 0
Participantes 1