java - 非法参数异常 : Authorities list must not be null

标签 java spring

我正在使用 Java Spring 编写一个 Web 应用程序。我有这段代码会引起一些麻烦:

List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
user.setAuthorities(authorities);

UserDetails userDetails = new MyUserDetails(user);
jdbcUserDetailsManager.setDataSource(jdbc.getDataSource());
jdbcUserDetailsManager.setJdbcTemplate(jdbc);
jdbcUserDetailsManager.createUser(userDetails);

最后一行引发异常

java.lang.IllegalArgumentException: Authorities list must not be null

这是 MyUserDetails 类:

public final class MyUserDetails extends MyUser implements UserDetails {

private static final long serialVersionUID = 1L;

public MyUserDetails (MyUser user) {
    super(user);
    this.setPassword(user.getPassword());
    this.setLogin(user.getLogin());
    this.setAuthorities(user.getRoles());
}

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
    return getRoles();
}

@Override
public String getUsername() {
    return getLogin();
}

@Override
public boolean isAccountNonExpired() {
    return true;
}

@Override
public boolean isAccountNonLocked() {
    return true;
}

@Override
public boolean isCredentialsNonExpired() {
    return true;
}

@Override
public boolean isEnabled() {
    return true;
}
}

这是 MyUser 类:

public class MyUser {

    String login;
    String password;
    List<GrantedAuthority> roles;

    public MyUser(MyUser user) {
        super();
        this.login = user.getLogin();
        this.password = user.getPassword();
    }

    public String getLogin() {
        return login;
    }

    public String getPassword() {
        return password;
    }

    public void setAuthorities(List<GrantedAuthority> authorities) {
        this.roles = roles;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public List<GrantedAuthority> getRoles() {
        return roles;
    }

}

有关此主题的任何想法和建议将不胜感激。

最佳答案

MyUser类中替换

public void setAuthorities(List<GrantedAuthority> authorities) {
    this.roles = roles;
}

public void setAuthorities(List<GrantedAuthority> authorities) {
    this.roles = authorities;
}

关于java - 非法参数异常 : Authorities list must not be null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36295350/

相关文章:

java - 如何在java中呈现简单的警报消息?

java - 在 Spring 中将字符串数组注入(inject) bean

java - Spring 执行器的活跃度和就绪度正在恢复 404

java - spring jdbctemplate为last_insert_id()返回0

java - 使用spring boot(安全)和keycloak启用角色身份验证?

spring - 我们可以将动态值传递给spring mvc的@RequestMapping注解吗?

java - Bean 在测试期间不会 Autowiring (java.lang.NullPointerException)

java - 尝试将 JSON 字符串转换为 JavaPOJO 时遇到奇怪的问题

java - 在 JSF1.1 中使用带有 DataTable 的自定义组件时出现重复 ID 错误

java - 通过数据库模式生成持久性映射后缺少@CreationTimestamp和@UpdateTimestamp