我想更改用户的角色。更改用户在数据库中的角色。一切都基于 Spring Security。
我的代码:
UserDetails user = userDetailsManager.loadUserByUsername(userData.getUser().getUsername());
user.getAuthorities().add(new SimpleGrantedAuthority(role));
userDetailsManager.updateUser(user);
错误:
Error:(99, 30) java: method add in interface java.util.Collection<E> cannot be applied to
given types;
required: capture#1 of ? extends org.springframework.security.core.GrantedAuthority
found: org.springframework.security.core.authority.SimpleGrantedAuthority
reason: actual argument
org.springframework.security.core.authority.SimpleGrantedAuthority cannot be converted to
capture#1 of ? extends org.springframework.security.core.GrantedAuthority by method
invocation conversion
不知道为什么会出现这个错误。否则如何更改用户的角色?
最佳答案
您可以通过从现有的 UserDetails 对象创建一个新的 UserDetails 对象来更新给定用户的角色,然后调用 UserDetailsManager.updateUser() 方法,如下所示:
UserDetails oldDetails = userDetailsManager.loadUserByUsername(user);
UserDetails newDetails = new User(user, oldDetails.getPassword(), newRole);
userDetailsManager.updateUser(newDetails);
关于java - 通过 userDetailsManager 更改用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23713672/