Java 通过userDetailsManager更改用户角色
我想更改用户的角色。正在更改用户在数据库中的角色。一切都基于Spring安全性 我的代码:Java 通过userDetailsManager更改用户角色,java,spring,spring-security,roles,Java,Spring,Spring Security,Roles,我想更改用户的角色。正在更改用户在数据库中的角色。一切都基于Spring安全性 我的代码: UserDetails user = userDetailsManager.loadUserByUsername(userData.getUser().getUsername()); user.getAuthorities().add(new SimpleGrantedAuthority(role)); userDetailsManager.updateUser(user); 错误: Error:(
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
错误:(99,30)java:method加载项接口java.util.Collection无法应用于
给定类型;
必需:捕获#1个?扩展org.springframework.security.core.GrantedAuthority
找到:org.springframework.security.core.authority.SimpleGrantedAuthority
理由:实际论点
org.springframework.security.core.authority.SimpleGrantedAuthority无法转换为
捕获#1个?通过方法扩展org.springframework.security.core.GrantedAuthority
调用转换
我不知道为什么会有这样的错误。如何更改用户的角色?您可以通过从现有的UserDetails对象创建新的UserDetails对象,然后调用UserDetailsManager.updateUser()方法来更新给定用户的角色,如下所示:
UserDetails oldDetails = userDetailsManager.loadUserByUsername(user);
UserDetails newDetails = new User(user, oldDetails.getPassword(), newRole);
userDetailsManager.updateUser(newDetails);
SimpleGrantedAuthority是否扩展授权?你能显示它的代码吗?是的,它实现了这个接口。试试
GrantedAuthority ga=new-SimpleGrantedAuthority(角色);user.getAuthories().add(ga)代码>无,它不工作:(