簡體   English   中英

IllegalArgumentException:授權列表不能為空

[英]IllegalArgumentException: Authorities list must not be null

我正在用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:權限列表不能為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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM