我正在使用spring-security框架.当我更新权限时,它不会立即生效.我必须退出当前用户(意味着退出),然后重新访问(意味着登录)将更新用户的权限.
在spring security中更新用户权限后立即启用权限的方法是什么?
我已经使用spring安全模块实现了OAuth2密码授权.我添加了自己的UserDetails实现和UserDetailsService(jdbc).我将用户注入我的控制器:
@AuthenticationPrincipal User user
Run Code Online (Sandbox Code Playgroud)
User是UserDetails的实现.现在我想添加更改用户数据的可能性而不刷新令牌.
我尝试用以下内容刷新主体:
User updatedUser = ...
Authentication newAuth = new UsernamePasswordAuthenticationToken(updatedUser, updatedUser.getPassword(), updatedUser.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(newAuth);
Run Code Online (Sandbox Code Playgroud)
但它不起作用,当我调用另一个控制器方法时,它返回旧的User对象.
有没有办法在没有刷新令牌的情况下更改用户数据?是否有任何解决方案使Spring安全性始终从数据库(而不是从Cache)加载用户数据?