SecurityContextHolder.getContext (). GetAuthentication () всегда возвращает anonymousUser - PullRequest
0 голосов
/ 08 ноября 2018

Я создал загрузочное приложение Spring со следующей конфигурацией:

  • Spring boot 2.1.0.RELEASE
  • OpenJdk 11

В моем проекте есть класс AuditConfiguration, который выглядит следующим образом:

@Configuration
@EnableJpaAuditing(auditorAwareRef = "auditorProvider")
public class AuditConfiguration {

    @Bean
    public AuditorAware<String> auditorProvider() {
        return new AuditorAwareImpl();
    }

    class AuditorAwareImpl implements AuditorAware<String> {
        @Override
        public Optional<String> getCurrentAuditor() {
            Principal principal = 
            SecurityContextHolder.getContext().getAuthentication();
            return Optional.of(principal.getName());
        }
    }
}

и SecurityContextHolder.getContext().getAuthentication() всегда возвращают anonymousUser.

Однако следующий код возвращает правильное имя пользователя.

@RestController
@RequestMapping("/history")
public class HistoryEndpoint {

    @RequestMapping(value = "/username", method = RequestMethod.GET)
    @ResponseBody
    public String currentUserName(Principal principal) {
        return principal.getName();
    }
}

Мне нужна ваша помощь для решения этой проблемы.

1 Ответ

0 голосов
/ 15 ноября 2018

Я получил аутентифицированного пользователя, используя следующий класс. У меня были проблемы с проверкой JPA. @CreatedBy всегда сохраняется null. Затем я попытался получить аутентифицированного пользователя SecurityContextHolder.getContext().getAuthentication(), используя этот метод. этот метод вернул annonymousUser. однако моя проблема исправлена.

@ManagedBean
@EnableJpaAuditing
public class SpringSecurityAuditorAware implements AuditorAware<String> {

private final HttpServletRequest httpServletRequest;

public SpringSecurityAuditorAware(HttpServletRequest httpServletRequest) {
    this.httpServletRequest = httpServletRequest;
}

@Override
public Optional<String> getCurrentAuditor() {
    return Optional.ofNullable(httpServletRequest.getUserPrincipal())
            .map(Principal::getName);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...