前提・実現したいこと
Spring Security初学者です.
DBからユーザ情報を取得し,認証を行う処理を実装したいのですが,以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'webSecurityConfig': Injection of autowired dependencies failed; nested exception is java.lang.Error: Unresolved compilation problem: The method userDetailsService(T) in the type AuthenticationManagerBuilder is not applicable for the arguments (UserDetailsService)
WebSecurityConfigのUserDetailsServiceを指定する際に,型の不整合が発生してしまい,お手上げの状況です.
該当のソースコード
WebCecurityConfig.java
java
1@EnableWebSecurity 2public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 3 4 /省略/ 5 6 @Autowired 7 private UserDetailsService userDetailsService; 8 9 @Autowired 10 void configureAuthenticationManager(AuthenticationManagerBuilder auth) throws Exception{ 11 auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder()); 12 } 13}
UserDetailsServiceImpl.java
Java
1@Service 2public class UserDetailsServiceImpl implements UserDetailsService { 3 4 @Autowired 5 private UserRepository userRepository; 6 7 @Override 8 public UserDetails loadUserByUsername(String id) throws UsernameNotFoundException{ 9 User user = userRepository.getOne(id); 10 return user; 11 } 12 13}
UserDetailsService.java
Java
1 2@Service 3public interface UserDetailsService { 4 UserDetails loadUserByUsername(String id) throws UsernameNotFoundException; 5 6} 7
UserRepository.java
java
1@Repository 2public interface UserRepository extends JpaRepository<User, String> { 3 List<User> findAll(); 4 User getOne(String id); 5} 6
User.java
java
1@Entity 2@Table(name = "users") 3@Data 4public class User implements UserDetails { 5 @Id 6 private String id; 7 private String name; 8 private String password; 9 private String role; 10 11 @Override 12 public Collection<? extends GrantedAuthority> getAuthorities(){ 13 return null; 14 } 15 16 @Override 17 public String getUsername() { 18 return this.id; 19 } 20 21 @Override 22 public boolean isEnabled() { 23 return true; 24 } 25 26 @Override 27 public boolean isAccountNonLocked() { 28 return true; 29 } 30 31 @Override 32 public boolean isCredentialsNonExpired(){ 33 return true; 34 } 35 36 @Override 37 public boolean isAccountNonExpired(){ 38 return true; 39 } 40 41 42} 43
補足情報(FW/ツールのバージョンなど)
Java 17
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/04 05:03