Java FilterImplementation zur Sitzungsüberprüfung
Ich erstelle eine Webanwendung mit JSF, Hibernate, Spring. Ich habe einen Filter zur Überprüfung der Sitzung hinzugefügt. Mein Filtercode ist:
public class AdminFilter implements Filter{
private ArrayList<String> urlList;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String urls = filterConfig.getInitParameter("avoid-urls");
StringTokenizer token = new StringTokenizer(urls, ",");
urlList = new ArrayList<String>();
while (token.hasMoreTokens()) {
urlList.add(token.nextToken());
}
}
// Checking if user is logged in
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req= (HttpServletRequest) request;
HttpServletResponse resp= (HttpServletResponse) response;
String url = req.getServletPath();
HttpSession session = req.getSession();
if(!urlList.contains(url) && session.getAttribute("user")==null)
{
resp.sendRedirect(req.getContextPath() + "/backend/login/index.xhtml");
}
chain.doFilter(req, resp);
}
@Override
public void destroy() {
// throw new UnsupportedOperationException("Not supported yet.");
}
}
In der Init-Methode des Filters habe ich einige zu vermeidende URL, für die die Sitzungsüberprüfung übersprungen werden sollte, wie für die Anmeldeseite selbst. Dies funktioniert korrekt, aber dieser Filter schränkt das Laden von CSS, Bildern und JS auf der Anmeldeseite ein. Schlagen Sie mir vor, wo das Problem in meinem Filter liegt.