Как игнорировать OncePerRequestFilter для определенных API

Я создал собственный фильтр для аутентификации токена AuthenticationTokenFilter, и он расширен OncePerRequestFilter. Я настраиваю некоторые API-интерфейсы как API-интерфейсы белого списка в моем SecurityConfig, для этих Apis из белого списка я пытался обойти свой AuthenticationTokenFilter.

@EnableWebSecurity
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@Order(SecurityProperties.BASIC_AUTH_ORDER)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private AuthenticationTokenFilter authenticationTokenFilter;

    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http.authorizeRequests().
            regexMatchers("^(?!/webjars/).*",
                    "^(?!/swagger-resources/).*",
                    "^(?!/swagger-ui.html).*").permitAll().
            antMatchers("/healthcheck/ping",
                    "/user" + ApiMapper.SIGN_IN_API,
                    "/user" + ApiMapper.FORGET_PASSWORD,
                    "/user" + ApiMapper.SIGN_OUT_API,
                    ApiMapper.SWAGGER_RESOURCE,
                    ApiMapper.FAVICON_ICO,
                    ApiMapper.APP_ENDPOINTS).permitAll().
            anyRequest().authenticated().
            and().
            // If user isn't authorised to access a path...
                    exceptionHandling().
            // ...redirect them to /403
                    accessDeniedPage("/403").
            and().
            anonymous().disable();

        http.addFilterBefore(authenticationTokenFilter, BasicAuthenticationFilter.class);
    }

    @Override
    public void configure(WebSecurity web) throws Exception {

        web.ignoring().
            regexMatchers("^(?!/webjars/).*").
            regexMatchers("^(?!/swagger-resources/).*").
            regexMatchers("^(?!/swagger-ui.html/).*").
            antMatchers("/healthcheck/ping",
            "/user" + ApiMapper.SIGN_IN_API,
            "/user" + ApiMapper.FORGET_PASSWORD,
            "/user" + ApiMapper.SIGN_OUT_API,
            ApiMapper.SWAGGER_RESOURCE + "/.*",
            ApiMapper.FAVICON_ICO,
            ApiMapper.APP_ENDPOINTS);
    }
}

Я нашел аналогичный ответ здесь, но я уже игнорировал настройку WebSecurity. Итак, почему мне нужно написать то же самое на уровне фильтров.

Где я делаю не так или, может быть, я не в том контексте.

Возможный дубликат stackoverflow.com/questions/39314176/…

dur 31.12.2018 11:06

@dur nope, я просто хочу отключить фильтр для определенного API, настроенного в webSecurity.ignoring ().

eigenharsha 01.01.2019 08:28

Да, я знаю. И?

dur 01.01.2019 11:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
1 386
0

Другие вопросы по теме