How to exclude a specific HTTP method from `javax.servlet.Filter`?

I would like to exclude HTTP OPTIONrequests from mine javax.servlet.Filter. How can i achieve this?

Filter Registration:

@Bean
public FilterRegistrationBean filterRegistrationBean() {

    FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(authorizationRequestFilter());
    registrationBean.addUrlPatterns("/persons/*", "/accounts/*");

    return registrationBean;
}

I would like to avoid the XML configuration.

Actual condition

Now I exclude the method OPTIONSin the filter:

 @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

        HttpServletRequest request = (HttpServletRequest) req;

        if ("OPTIONS".equals(request.getMethod())) {
            chain.doFilter(req, res);
        } else {
            String accessToken = request.getHeader(AUTHORIZATION_TOKEN);
            if (StringUtils.isEmpty(accessToken)) {
                HttpResponseWriter.throwUnauthorized(res);
            } else {
                AccountLoginData account = loginService.find(accessToken);
                if (account == null) {
                    HttpResponseWriter.throwForbidden(res);
                } else {
                    chain.doFilter(req, res);
                }
            }
        }

    }
+4
source share

Source: https://habr.com/ru/post/1607805/


All Articles