这肯定是一个普遍的问题…而且我觉得在使用Google搜索和SOing之后,我肯定只是没有彻底地环顾四周以获得足够的答案,或者没有人问过这个问题…所以请原谅我。
我正在使用Spring Security和Hibernate等
因此,用户/主要用户已登录并对其个人资料进行了一些更改。
我使用DAO更新配置文件(UserDetails),并且希望我的Principal自动反映此更新。
但是,当我再次获得Principal时,会得到脏版本(从我的初始登录名开始)。
有谁知道我如何才能从Hibernate重新加载更新的UserDetails来获取Spring Security?
OK挖了一下,终于找到了答案。
我们可以创建一个UsernamePasswordAuthenticationToken并将更新的Principal分配给上下文。
Authentication authentication = new UsernamePasswordAuthenticationToken(userObject, userObject.getPassword(), userObject.getAuthorities()); SecurityContextHolder.getContext().setAuthentication(authentication);