Java FilterImplementation для проверки сеанса

Я создал веб-приложение, используя JSF, Hibernate, Spring. Я добавил фильтр для проверки сеанса. Код моего фильтра:

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

}

В методе фильтра init у меня есть некоторый URL-адрес для избежания проверки сеанса, например, для самой страницы входа. Это работает правильно, но этот фильтр ограничивает мой CSS, изображения и JS для загрузки на странице входа. Подскажите, в чем проблема моего фильтра?

 Jigar Joshi11 июн. 2012 г., 04:36
Что вы добавили вurlList пропустить js, css ?, должно быть что-то вроде/PATH/TO/CSS/FROM/WEBROOT/CSS/
 Durga Dutt11 июн. 2012 г., 04:37
& Lt; INIT-пары & GT; & Lt; пары имя-& GT; избегать-URLs & Lt; пары имени-& GT /; & Lt; пары-значение & GT; /backend/login/index.xhtml< / пары-значение & GT; & Lt; / INIT-пары & GT;
 Jigar Joshi11 июн. 2012 г., 04:38
У вас есть какие-либо параметры для CSS, JS, Изображения? (Они используются на странице входа в систему)?
 Durga Dutt11 июн. 2012 г., 04:40
Нет, я не добавил избегать URL для CSS, изображений и JS. Но я думаю, что не стоит добавлять эти URL в web.xml. Должен быть лучший способ
 Jigar Joshi11 июн. 2012 г., 04:42
Я так не думаю, если вы не хотите помещать его в файл web.xml, вы можете поместить его в отдельный файл XML и просто упомянуть этот файл в файле web.xml, проанализировать и создать список из init, но это дольше. путь

Ответы на вопрос(2)

в настоящее время ваш фильтр игнорирует, если URL предназначен для получения CSS, изображений или любого другого ресурса.

boolean staticResources = (url.contains("css") || url.contains("images"));
if(!urlList.contains(url) && session.getAttribute("user")==null && !staticResources)  {
      resp.sendRedirect(req.getContextPath() + "/backend/login/index.xhtml");
}

Это позволит избежать проверки сеанса на статическое содержимое.

Лучшим способом сделать это будет использование декларативной безопасности как частиJava EE Web Security используя царство.

Решение Вопроса

JS, Изображения), которые запрашиваются из браузера в виде отдельного запроса, который будет перехвачен фильтром, и поскольку у вас нет никаких параметров, которые пропускают такие запросы ресурсов (используемые на странице входа в систему), он заблокирует этот запрос

Suggestion:

Вы могли бы использоватьВесна-безопасностьвместо того, чтобы тратить время на написание своего, он имеет большую гибкость в зависимости от конфигурации

 11 июн. 2012 г., 04:48
Добро пожаловать :)
 Durga Dutt11 июн. 2012 г., 04:44
Хорошо, я получил это. Большое спасибо за ваши ответы.

Ваш ответ на вопрос