- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
目前,我的 AuditorAware
实现使用 Spring 的 SecurityContextHolder
检索当前 Auditor 以保存创建/修改用户名:
@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());
}
}
除了由 Spring 批处理的 SimpleAsyncTaskExecutor
执行的异步任务外,这适用于大多数操作.
到实体需要保存时,因为 SecurityContextHolder
在处理完请求后被删除,并且 jobLauncher.run(...)
异步返回,AuditorAwareImpl.getCurrentAuditor()
方法抛出一个 NullPointerException
由于 getAuthentication()
为空:
java.lang.NullPointerException: null
at com.example.services.AuditorAwareImpl.getCurrentAuditor(AuditorAwareImpl.java:31)
at com.example.services.AuditorAwareImpl.getCurrentAuditor(AuditorAwareImpl.java:18)
到目前为止,我已将请求调用用户作为作业的非标识参数包括在内,但不知道从哪里开始。
当 SecurityContextHolder
不适合查找调用“审核员”时,推荐使用 spring 的内置审核的方法是什么?
最佳答案
你可以包装你的 AsyncTaskExecutor
在DelegatingSecurityContextAsyncTaskExecutor
这是专门为传播 Spring SecurityContext
而设计的。此外,您还需要为安全上下文设置 MODE_INHERITABLETHREADLOCAL
。
关于java - 如何在异步任务中利用 spring-data-jpa 审计 (AuditorAware)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580608/
我已经使用 Spring Data JPA 实现了审计,完全遵循 this documentation .运行应用程序时一切正常,但是当我将 WAR 部署到 Tomcat 并尝试创建实体时,我在 ge
我正在尝试将自定义值加载到我的 AuditFields 实体中的 @CreatedBy 字段中。每当我发出 POST 请求时,我都希望 Spring Data Rest 使用此 AuditorAwar
目前,我的 AuditorAware实现使用 Spring 的 SecurityContextHolder检索当前 Auditor 以保存创建/修改用户名: @Service public class
这是我的场景: 我的应用程序启用了 Mongo 审核,并使用自定义 AuditorAware 从 SecurityContext 获取当前用户。这适用于同步方法,并且成功保存了当前审计员,但我无法使用
Spring Security 5 提供了一个 ReactiveSecurityContextHolder to fetch the SecurityContext from a Reactive c
我正在尝试实现 AuditorAware进入我的网络应用程序。以下是我的库版本列表: jsf 2.2.13 hibername 5.1.3.Final Spring 5.0.3.RELEASE spr
我们在应用程序中使用 Hibernate/JPA、Spring、Spring Data 和 Spring Security。我有一个使用 JPA 映射的标准 User 实体。此外,我有一个 UserR
我的 spring 后端有一个非常讨厌的 StackOverflowException,我需要帮助。这不会轻易解决。我真的希望在这里找到一些帮助。 我的大部分后端工作。我可以在我的 REST 接口(i
我是一名优秀的程序员,十分优秀!