私はJava SpringでWebアプリケーションを作成しています。私はいくつかのトラブルの原因となるコードのこの部分を持っている:当局リストはIllegalArgumentException:権限リストがnullであってはなりません
これはnullであってはならない。
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がの原因となります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; } }
これはクラスMyユーザー:
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
クラスで
と交換してください。 –
質問を編集しました。 – Someone
あなたの投稿に矛盾があり、何が何であるのか分かりません:_ "これはMyUserDetailsクラスです" _しかしコンストラクタは 'UserRepositoryUserDetails'です。また、 'UserDB'とは何ですか?リストがあなたの思うように設定されていないことは明らかですが、コードを見ることはできません。 –