AuthenticationVoters не имеет допустимого атрибута. SpringSecurity - PullRequest
1 голос
/ 05 мая 2020

Я работаю над 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.

...