【发布时间】:2016-02-21 14:25:36
【问题描述】:
我已经使用 spring 安全模块实现了 OAuth2 密码授予。我添加了自己的 UserDetails 和 UserDetailsService (jdbc) 实现。我将 User 注入到我的控制器中:
@AuthenticationPrincipal User user
其中 User 是我的 UserDetails 实现。 现在我想在不刷新令牌的情况下添加更改用户数据的可能性。
我尝试通过以下方式刷新主体:
User updatedUser = ...
Authentication newAuth = new UsernamePasswordAuthenticationToken(updatedUser, updatedUser.getPassword(), updatedUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(newAuth);
但它不起作用,当我调用另一个控制器方法时,它返回旧的用户对象。
有没有办法在不刷新令牌的情况下更改用户数据?是否有任何解决方案可以让 Spring Security 始终从数据库(而不是缓存)加载用户数据?
【问题讨论】:
-
在应用程序的哪一层刷新principals?
标签: spring-security spring-oauth2