【发布时间】:2021-12-04 19:21:20
【问题描述】:
当我尝试将用户保存在计划任务中,然后通过 Authentication.getPrincipal() 在控制器中访问它时,尽管底层数据库记录发生更改,但它不会得到更新。
@Scheduled(fixedRate = 10_000)
public void job() {
User user = userRepo.findById(1).get();
user.setEmail("someNewEmail@gmail.com");
userRepo.save(user);
}
我使用 Spring Security,我相信用户的信息会以某种方式缓存在 SecurityContextHolder 中,因此不允许我使用已保存用户的更新值。
此外,如果我执行 SignOut - SignIn 数据会更新,但这不能视为解决方案。
作为一种解决方法,我尝试使用自动装配的 EntityManager 并在获取数据之前使用用户刷新记录,但这假设我应该为需要获取用户的每个请求执行此操作。也不是最好的解决方案
除用户外的其他实体都保存完好
【问题讨论】:
标签: spring-boot spring-security