java - 通过 userDetailsManager 更改用户角色

标签 java spring spring-security roles

我想更改用户的角色。更改用户在数据库中的角色。一切都基于 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/

相关文章:

java - 有没有简单的方法可以将回历日期作为 DateTime?

java - org.hibernate.hql.internal.ast.QuerySyntaxException : is not mapped [from Team]

ajax - Grails - Spring Security REST - 302 响应 net::ERR_TOO_MANY_REDIRECTS

java - 错误 HTTP 状态 403 - 在请求参数 'null' 或 header '_csrf' 上发现无效的 CSRF token 'X-CSRF-TOKEN'

spring-security - Spring OAuth2 - oauth/authorize 中的自定义 "OAuth Approval"页面

java - 从没有 SparkContext 的列表创建 JavaRDD

java - 连接列留空

java - OracleDataSource、Oracle UCP、Commons DBCP 和 Tomcat 连接池之间的区别?

Spring Data Cassandra 计数器更新

java - Spring-Data-Jpa AuditingEntityListener createdDate 在保存现有实体时更新