Я работаю над Spring Boot 2.1.
Я хочу, чтобы все мои конечные точки по умолчанию были разрешены
- либо, если они правильно аутентифицированы,
- , либо если они проходят с указанием c аутентификации правила, которые я реализовал и назвал * hashSerialSecurityVoter *.
Мой код:
SecurityConfig. java
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.disable().cors().and().exceptionHandling()
/* [...] */
.anyRequest()
.authenticated();
.accessDecisionManager(playerResourceDecisionManager());
}
@Bean
public AccessDecisionManager playerResourceDecisionManager() {
List<AccessDecisionVoter<? extends Object>> decisionVoters = Arrays.asList(
new AuthenticatedVoter(),
hashSerialSecurityVoter
);
return new UnanimousBased(decisionVoters);
}
Он эффективно проходит через обоих избирателей.
Но в AuthenticatedVoter он не работает, как я ожидал.
Даже если я аутентифицирован, он возвращает значение ACCESS_ABSTAIN .
При отладке я заметил, что Manager не предоставляет никаких атрибутов ConfigAttribute.
Итак, authenticatedVoter.supports()
методы возвращают false ..
Я что-то пропускаю в объявлении accessDecisionManager?
В результате мой основной клиент API больше не работает, потому что все мои запросы возвращаются с кодом 403.