は現在、私のAuditorAware
実装は、作成/修正ユーザー名を保存するための現在の監査を取得するために、SpringのSecurityContextHolder
を使用しています。非同期タスクでspring-data-jpa監査(AuditorAware)をどのように活用できますか?
@Service
public class AuditorAwareImpl implements AuditorAware<UserDetails> {
private final UserDetailsService userDetailsService;
@Autowired
public AuditorAwareImpl(UserDetailsService userDetailsService){
this.userDetailsService = userDetailsService;
}
@Override
public UserDetails getCurrentAuditor() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return userDetailsService.loadUserByUsername(authentication.getName());
}
}
これは春のバッチのSimpleAsyncTaskExecutor
で実行される非同期タスクを除き、ほとんどの操作のために正常に動作します。 SecurityContextHolder
を払拭するため、要求が処理された後、時間エンティティによって
jobLauncher.run(...)
戻り、
AuditorAwareImpl.getCurrentAuditor()
方法が原因ヌル
getAuthentication()
に
NullPointerException
がスローされます。これまでのところ
java.lang.NullPointerException: null
at com.example.services.AuditorAwareImpl.getCurrentAuditor(AuditorAwareImpl.java:31)
at com.example.services.AuditorAwareImpl.getCurrentAuditor(AuditorAwareImpl.java:18)
私はジョブに要求を呼び出すユーザを非識別パラメータとして含めましたが、ここからどこへ進めるべきか分かりません。
SecurityContextHolder
が呼び出された「監査人」を見つけるのに適していない場合、春の組み込み監査を活用するための推奨方法は何ですか?
私はこの問題を解決していません。 –
私はつまらないものを意味します(間違い) –