#jhipster
Вопрос:
Я хочу добавить новый фильтр сервлетов в цепочку JHipster. Это тот, который должен выполняться после того, как JWT был признан действительным. По сути, я хочу, чтобы этот новый фильтр проверял репозиторий «баланс» для текущего пользователя и возвращал код HTTP 402, если баланс недостаточен.
Я подумал о том, чтобы добавить его после фильтра аутентификации имени пользователя(который идет после фильтра JWT) через конфигуратор баланса
public BalanceConfigurer() {
}
@Override
public void configure(HttpSecurity http) {
BalanceFilter balanceFilter = new BalanceFilter();
http.addFilterAfter(balanceFilter, UsernamePasswordAuthenticationFilter.class);
}
это кажется правильным ?
Комментарии:
1. Если я не ошибся, фильтры исправлены, чтобы всегда возвращать 401 при ошибке ? Возможно, лучшей идеей было бы создать аспект и прикрепить его к соответствующим контроллерам.. попросите его проверить баланс перед методом .. выдать исключение недостаточного баланса, когда это имеет смысл, а затем уловить это в «после» аспекта и перейти к коду Http 402 ?
2. Учитывая, что вы хотите выполнить код после аутентификации JWT и до контроллера, рассматривали ли вы возможность использования обработчика-интерпретатора? Это похоже на Аспект, но проще. Видишь baeldung.com/spring-mvc-handlerinterceptor-vs-filter
3. ДА.. на самом деле это то, что я в конечном итоге сделал намного проще.. github.com/walshe/bolt11-lightning-monitized-api-/blob/master/…
Ответ №1:
Было намного проще добавить a BalanceInterceptor
— встраивание org.springframework.web.servlet.HandlerInterceptor
, которое также позволило мне выяснить фактический вызываемый api (что я не мог сделать с аспектом на контроллере )