我已经将弹簧安全性集成到一个带有弹簧引导的宁静API上,
现在我正在寻找一种方法来更新已登录用户的权限。
我已经为Spring身份验证实现了一个自定义用户!
我可以像这样从sessionRegistry
获得所有校长(所有登录用户):
List<Object> allPrincipals = sessionRegistry.getAllPrincipals();
现在,当我尝试更新特定用户的权限时,当局不会更新我总是拥有相同的权限,直到退出然后登录。
这是我的代码:
List<Object> allPrincipals = sessionRegistry.getAllPrincipals();
for (Object principal : allPrincipals) {
if (principal instanceof SpringSecurityAuthentificatedUser) {
SpringSecurityAuthentificatedUser principalInSession = (SpringSecurityAuthentificatedUser) principal;
if(id.equals(principalInSession.getUser().getId().toString())){
// updating the user's authorities
principalInSession.getUser().setRole(role);
principalInSession.getAuthorities().clear();
principalInSession.getAuthorities().add(new SimpleGrantedAuthority(role));
SpringSecurityAuthentificatedUser springSecurityAuthentificatedUser =
new SpringSecurityAuthentificatedUser(principalInSession.getUser(),principalInSession.getUser().getPassword(),principalInSession.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(
new UsernamePasswordAuthenticationToken(springSecurityAuthentificatedUser, principalInSession.getUser().getPassword(), principalInSession.getAuthorities())
);
}
}
}
任何人都可以帮助我吗?