http.antMatcher(...)
- означает, применить это http
и все, что настроено здесь, когда встречается образец в antMatcher
.
http.authorizeRequests()...
- определяет ваши разрешения, если пользователь нажал на эту конечную точку, он должен иметь «ADMIN», «logged» и т. Д.
В вашем FirstWaveFilters
вы должны начать свой http
с http.antMatcher()
:
http.antMatcher("/HQ/test_web/**");
http.authorizeRequests().antMatchers("/HQ/test_web/**").anonymous()
.and()
.addFilterBefore(new CustomFilter(),BasicAuthenticationFilter.class);
Если вы не добавите http.antMatcher(...);
, то этот http
будет перехватывать все URL и SecondWaveFilters
никогда не будет достигнуто.
http.authorizeRequests().antMatchers("/HQ/test_web/**").anonymous()
- означает, что любой анонимный пользователь может нажать /HQ/test_web/**
, но это не означает «применять FirstWaveFilters
, когда /HQ/test_web/**
», это просто означает, что любой, кто шипит /HQ/test_web/**
, может быть анонимным.
Я сказал бы, что Ваше эмпирическое правило не плохо.
По моему мнению, базовое беспокойство является "действительно ли кодом, является определенным для представления, или это обращается к бизнес-логике?".
Нормально иметь код в представлении, если тот код должен строго здесь изменить представление а не выполнить какой-либо вид бизнес-логики. Вашим примером изменения размера шрифта является главный пример кода, который прекрасно подходит в представлении (и увеличил бы шум в ViewModel, мешая понимать и поддерживать). В сущности Вы уже делаете часть этого при использовании триггеров, поэтому дело не в этом странный.
Следует иметь в виду, хотя при использовании модульных тестов будет очень трудно протестировать тот бит логики представления. При необходимости в в протестированном Вы могли бы быть более обеспеченным помещением его в viewmodel.