Spring boot 在spring boot中创建自定义安全配置时出错
ConfigServletWebServerApplicationContext:遇到异常 在上下文初始化期间-取消刷新尝试: org.springframework.beans.factory.unsatifiedDependencyException: 创建名为“securityConfig”的bean时出错:未满足依赖关系 通过字段“readerRepository”表示;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“readerRepository”的bean:调用init方法 失败;嵌套异常是java.lang.IllegalArgumentException:不是 托管类型:类java.io.Reader 安全配置文件:Spring boot 在spring boot中创建自定义安全配置时出错,spring-boot,spring-security,Spring Boot,Spring Security,ConfigServletWebServerApplicationContext:遇到异常 在上下文初始化期间-取消刷新尝试: org.springframework.beans.factory.unsatifiedDependencyException: 创建名为“securityConfig”的bean时出错:未满足依赖关系 通过字段“readerRepository”表示;嵌套异常是 org.springframework.beans.factory.BeanCreationExcepti
package com.example.readinglist;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
private ReaderRepository readerRepository;
@Override
protected void configure(HttpSecurity http) throws Exception{
http.authorizeRequests()
.antMatchers("/")
.access("hasRole('Reader')")
.antMatchers("/**").permitAll().and().formLogin().loginPage("/login")
.failureUrl("/login?error=true");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(new UserDetailsService(){
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return readerRepository.findOne(username);
}
});
}
}
我认为
readerRepository.findOne(username)
不会返回UserDetails对象。如果这是真的,您必须根据Reader对象中的信息创建一个新的UserDetails对象,并将其返回给您的存储库声明。
它必须是:
public interface ReaderRepository extends JpaRepository<<Name of your entity>, String> {
public接口ReaderRepository扩展了JpaRepository{
如果您的实体名称是
Reader
您导入了错误的类您导入了错误的读卡器实体-->您导入了“import java.io.Reader;”
您需要导入自定义读卡器实体类。消息不是托管类型吗:class java.io.Reader clear?java.io.Reader
不是实体
package com.example.readinglist;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
private ReaderRepository readerRepository;
@Override
protected void configure(HttpSecurity http) throws Exception{
http.authorizeRequests()
.antMatchers("/")
.access("hasRole('Reader')")
.antMatchers("/**").permitAll().and().formLogin().loginPage("/login")
.failureUrl("/login?error=true");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(new UserDetailsService(){
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return readerRepository.findOne(username);
}
});
}
}
public interface ReaderRepository extends JpaRepository<<Name of your entity>, String> {