Javers фиксируют имя автора - PullRequest
0 голосов
/ 07 марта 2020

следующий вопрос: я использую Javers в своем проекте Spring Boot и хочу извлечь имя автора коммита.

Значение snapshots.get(0).getCommitMetadata().getAuthor() дает только что-то вроде TokenPayload@254d2bf.

Первой идеей было установить компонент AuthorProvider Bean

@Bean
public AuthorProvider authorProvider() {
  return new SpringSecurityAuthorProvider();
}

, но это не помогло. Никакая дополнительная конфигурация не используется, только конфигурация по умолчанию. Заранее спасибо.

Javers Version: 5.8.9
Spring Boot Version: 1.5.8

1 Ответ

1 голос
/ 09 марта 2020

Вам необходимо предоставить Rigth AuthorProvider bean-компонент, который будет соответствовать вашей настройке Spring Security. SpringSecurityAuthorProvider, предоставляемый Javers, является реализацией по умолчанию.

/**
 * Returns a current user name from Spring Security context
 */
public class SpringSecurityAuthorProvider implements AuthorProvider {
    @Override
    public String provide() {
        Authentication auth =  SecurityContextHolder.getContext().getAuthentication();

        if (auth == null) {
            return "unauthenticated";
        }

        return auth.getName();
    }
}
...