I have a filter that gets the LDAP info, I'm just trying to pass the empid from the public boolean isUserAuthorized section to the doFilter section empid = attributes.get("empid").toString(); System.out.print("DoFilter empid: " +empid); but it is not working. What am I doing wrong?
PLEASE HELP I've been working on this for 2 weeks.
import java.io.IOException;
import javax.naming.directory.Attributes;
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.HttpServletRequestWrapper;
import javax.sql.DataSource;
import org.apache.commons.configuration.Configuration;
public class myFilter extends LdapFilter {
public static FilterConfig filterConfig;
public static Attributes attributes;
public AuditOracleImpl auditor = null;
public void init(FilterConfig filterConfig) throws ServletException {
super.init(filterConfig);
List<String>categories = new ArrayList<String>();
categories.add("LDAP");
try {
super.setConfig(categories);
} catch (Exception ex) {
throw new ServletException(ex);
}
try {
// Load configuration properties.
List<String> configList = new ArrayList<String>();
configList.add("TC");
configList.add("TCA");
configList.add("LDAP");
Configuration config = SystemUtils.getConfiguration(configList);
String strDbConnTCA = config.getString("DB_CONN_TCA");
String strDbUserTCA = config.getString("DB_USER_TCA");
String strDbPassTCA = config.getString("DB_PASS_TCA");
String strWallet = config.getString("WALLET_FILE");
//Obtain connection to the database.
DataSource dataSourceCa = OracleClient.getDataSource(strDbConnTCA, strDbUserTCA, trDbPassTCA, strWallet);
auditor = new AuditOracleImpl(dataSourceCa);
} catch (Exception ex) {
logger.error("Unable to create auditor {}", ex.getMessage());
}
}
@Override
public boolean isUserAuthorized(Attributes attributes) {
boolean isAuthorized = false;
if (attributes !=null && attributes.size() > 0 ) {
isAuthorized = true;
logger.info("Authorized: " + isAuthorized);
Properties properties = new Properties();
try {
propertiesUser.setProperty("CN", attributes.get("actualdn").get().toString().replaceFirst("CN=", ""));
propertiesUser.setProperty("EID", attributes.get("empid").get().toString();
propertiesUser.setProperty("EMAIL", attributes.get("empemail").get().toString();
auditor.user(propertiesUser);
} catch (Exception e) {
logger.error("Error updating user:{}", e.getMessage());
e.printStackTrace();
}
String[] items = {"accesstime", "empid", "ipAddress", "actualdn", "empemail"};
String result = parseData(items, attributes);
String empid = attributes.get("empid").toString();
//this is what i'm tyring to put in parameter to pass to the next servlet.
logger.info(result);
System.out.print("This is the empID: " + empid);
//this prints out okay
}
logger.info("isAuthorized: " + isAuthorized);
return isAuthorized;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain, Attributes attributes) throws IOException, ServletException {
empid = attributes.get("empid").toString();
chain.doFilter(request, response);
request.getAttribute(empid);
System.out.print("DoFilter empid: " +empid);
//Nothing prints out.
}
public void destroy() {
}