一尘不染

在Hibernate中更新后如何重新加载Spring Security Principal?

hibernate

这肯定是一个普遍的问题…而且我觉得在使用Google搜索和SOing之后,我肯定只是没有彻底地环顾四周以获得足够的答案,或者没有人问过这个问题…所以请原谅我。

我正在使用Spring Security和Hibernate等

因此,用户/主要用户已登录并对其个人资料进行了一些更改。

我使用DAO更新配置文件(UserDetails),并且希望我的Principal自动反映此更新。

但是,当我再次获得Principal时,会得到脏版本(从我的初始登录名开始)。

有谁知道我如何才能从Hibernate重新加载更新的UserDetails来获取Spring Security?


阅读 475

收藏
2020-06-20

共1个答案

一尘不染

OK挖了一下,终于找到了答案。

我们可以创建一个UsernamePasswordAuthenticationToken并将更新的Principal分配给上下文。

Authentication authentication = new UsernamePasswordAuthenticationToken(userObject, userObject.getPassword(), userObject.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);
2020-06-20