Похоже, @ EnableNeo4jAuditing правильно устанавливает поля @CreatedDate и @LastModifiedDate, однако поля @CreatedBy и @LastModifiedBy всегда имеют значение NULL. Кроме того, метод getCurrentAuditor () моего класса AuditorAware никогда не вызывается. Что я делаю не так? Могут быть споры о том, следует ли извлекать данные из UserRepo в классе AuditorAware, однако мой вопрос: почему getCurrentAuditor вообще не запускается?
@EnableNeo4jAuditing(auditorAwareRef = "auditorAware", modifyOnCreate = true, setDates = true)
@SpringBootApplication
public class HockeyApplication {
public static void main(String[] args) {
SpringApplication.run(HockeyApplication.class, args);
}
@Bean
public AuditorAware<User> auditorAware() {
return new AuditorAwareConfig();
}
}
public class AuditorAwareConfig implements AuditorAware<User> {
@Autowired
private UserRepo userRepo;
@Override
public Optional<User> getCurrentAuditor() {
return Optional.ofNullable(SecurityContextHolder.getContext()).map(SecurityContext::getAuthentication)
.filter(Authentication::isAuthenticated).map(authentication -> {
JwtAuthenticationToken token = (JwtAuthenticationToken) authentication;
Map<String, Object> attributes = token.getTokenAttributes();
User user = this.userRepo.findOneByEmail(attributes.get("user_name").toString()).block();
System.out.println(user.getEmail());
return user;
});
}
}
@Node("User")
public class User {
@Id
@GeneratedValue(generatorClass = UUIDStringGenerator.class)
private String uuid;
private String name;
private String email;
private String imageUrl;
@CreatedDate
private LocalDateTime createdDate;
@CreatedBy
private User createdBy;
@LastModifiedDate
private LocalDateTime lastModifiedDate;
@LastModifiedBy
private User lastModifiedBy;
}
Edit Я переключился на ReactiveSecurityContextHolder, и теперь есть бесконечная рекурсия, так что, может быть, лучше, а может и хуже ... возможно, придется установить UserDetailsService, хотя я действительно не хочу этого, поскольку мой сервер аутентификации использует это. Серверу ресурсов эта информация не нужна.