복붙노트

[SPRING] web.xml url-pattern matcher에는 URL을 제외시키는 방법이 있습니까?

SPRING

web.xml url-pattern matcher에는 URL을 제외시키는 방법이 있습니까?

CSS, JS 및 IMAGE 파일을 제외하고 내 사이트의 URL에 액세스 할 때마다 호출해야하는 필터를 작성했습니다. 그래서 제 정의에서 저는 다음과 같이하고 싶습니다 :

<filter-mapping>
   <filter-name>myAuthorizationFilter</filter-name>
   <url-pattern>NOT /css && NOT /js && NOT /images</url-pattern>
</filter-mapping>

이 작업을 수행 할 여지가 있습니까? 내가 찾을 수있는 유일한 문서는 / *

최신 정보:

Mr.J4mes가 제공 한 답변과 비슷한 것을 사용하여 끝냈습니다.

   private static Pattern excludeUrls = Pattern.compile("^.*/(css|js|images)/.*$", Pattern.CASE_INSENSITIVE);
   private boolean isWorthyRequest(HttpServletRequest request) {
       String url = request.getRequestURI().toString();
       Matcher m = excludeUrls.matcher(url);

       return (!m.matches());
   }

해결법

  1. ==============================

    1.나는 당신이 이것을 시도 할 수 있다고 생각한다.

    나는 당신이 이것을 시도 할 수 있다고 생각한다.

    @WebFilter(filterName = "myFilter", urlPatterns = {"*.xhtml"})
    public class MyFilter implements Filter {
    
       @Override
       public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
          String path = ((HttpServletRequest) request).getServletPath();
    
          if (excludeFromFilter(path)) chain.doFilter(request, response);
          else // do something
       }
    
       private boolean excludeFromFilter(String path) {
          if (path.startsWith("/javax.faces.resource")) return true; // add more page to exclude here
          else return false;
       }
    }
    
  2. ==============================

    2.URL 패턴 매핑은 제외를 지원하지 않습니다. 이것은 서블릿 스펙의 한계입니다. Mr.J4mes가 게시 한 수동 해결 방법을 시도 할 수 있습니다.

    URL 패턴 매핑은 제외를 지원하지 않습니다. 이것은 서블릿 스펙의 한계입니다. Mr.J4mes가 게시 한 수동 해결 방법을 시도 할 수 있습니다.

  3. ==============================

    3.아마도 당신은 css, js 등을 위해 또 다른 "빈"필터를 선언 할 수 있고 다른 필터 매핑 전에 놓을 수 있습니다.

    아마도 당신은 css, js 등을 위해 또 다른 "빈"필터를 선언 할 수 있고 다른 필터 매핑 전에 놓을 수 있습니다.

  4. ==============================

    4.보안 통제를 액세스 제어에 사용했습니다. 코드보기 :

    보안 통제를 액세스 제어에 사용했습니다. 코드보기 :

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Unsecured resources</web-resource-name>
            <url-pattern>/resources/*</url-pattern>
            <url-pattern>/javax.faces.resource/*</url-pattern>
        </web-resource-collection>
    </security-constraint>
    

    나는이 튜토리얼을 따른다.

  5. from https://stackoverflow.com/questions/8658949/in-a-web-xml-url-pattern-matcher-is-there-a-way-to-exclude-urls by cc-by-sa and MIT license