Bom dia amigos do GUJ.
Na minha aplicação, estou validando o login do usuario dentro de um filtro que necessariamente consulta a base de
dados sobre usuario e senha informados.
Porém não consegui encontrar na API uma forma de recuperar informações do contexto a partir deste filtro.
Preciso dessas informações para conectar na base de dados, pois por simplicidade resolví não guardar essas informçãos dentro de um data-source.
Alguém poderia me ajudar?
Um abraço a todos e obrigado pela atenção.
Como conseguiria recuperar informaçoes do contexto da aplicação á partir de um filtro?
2 Respostas
Lembrando que tenho uma idéia…
Poderia recuperar o contexto do Servlet dentro do filtro por meio de um objeto que implementa FilterConfig…
O problema é que não saquei ainda como inicializar este objeto dentro do filtro…
Percebí que devo passar essa config inicial por parâmetro via método init(FilterConfig conf) que está dentro do filtro.
Mas como passar uma Configuração para este método do filtro?
/*
- Filtro utilizado para validar o acesso do usuario ao sistema.
/
import java.io.;
import java.net.;
import java.util.;
import java.text.;
import javax.persistence.PersistenceException;
import javax.servlet.;
import javax.servlet.http.*;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
*
-
@author Tarcisio
*/
public class LoginFilter implements Filter {
private static final String USERNAME = "user";
private static final String PASSWORD = "pass";
private static final String NEXT = "next";
FilterConfig config;
public LoginFilter() {
}
public void init(FilterConfig filterConfig) {
this.config = filterConfig;
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain)
throws IOException, ServletException {
String user = req.getParameter(USERNAME);
String pass = req.getParameter(PASSWORD);
String next = req.getParameter(NEXT);
/*recupera informações de conexao com a base de dados que estão
gravadas no contexto da aplicação*/
ServletContext appContext = config.getServletContext();
if (next == null || next.length() == 0) {
next = "/index.jsp";
}
if(user == null || pass == null) {
req.getRequestDispatcher("erro.html").forward(req, resp);
}
try {
//validação do usuario na base de dados
chain.doFilter(req, resp);
} else {
req.getRequestDispatcher("acessoNegado.html").forward(req, resp);
}
}catch(PersistenceException p) {
p.printStackTrace();
}
}
public void destroy() {
}
}
Pessoal, da forma que descreví anteriormente funcionou mas não imagino de onde vem este parâmetro de inicialização, caso alguém saiba dizer, por favor me respondam…
Imagino que seja alguma chamada implícita ao método init do filtro, mas não sei dizer se é isso que ocorre realmente…
Um abraço a todos…