我正在使用Spring Security基本身份验证,应用程序启动时出现以下错误:
com.spring.security.firstapp.security.MySecurityConfig中的方法authManager的参数2需要类型为“org. spring framework.security.core.userdetails.UserDetailsService”的Bean,但找不到该Bean。
行动:
考虑在配置中定义一个类型为“org.springframework.security.core.userdetails.UserDetailsService”的bean。
MySecurityConfig.java
@Configuration 公共类MySecurityConfig {
@Autowired
private MyAuthenticationProvider authenticationProvider;
@Bean
public AuthenticationManager authManager(HttpSecurity http, BCryptPasswordEncoder passwordEncoder,
UserDetailsService userDetailService) throws Exception {
return http.getSharedObject(AuthenticationManagerBuilder.class)
.authenticationProvider(authenticationProvider)
.build();
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.httpBasic();
http.authorizeHttpRequests().anyRequest().authenticated();
return http.build();
}
@Bean
public static BCryptPasswordEncoder bcryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
}
MyAuthenticationProvider.java
@Component 公共类MyAuthenticationProvider实现了AuthenticationProvider {
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
String userName = authentication.getName();
String passWord = authentication.getCredentials().toString();
if("tom".equals(userName) && "abc".equals(passWord))
return new UsernamePasswordAuthenticationToken(userName, passWord);
else
throw new BadCredentialsException("Invalid credentials!!");
}
@Override
public boolean supports(Class<?> authentication) {
return authentication.equals(UsernamePasswordAuthenticationToken.class);
}
}
控制器
@RestController公共类HelloController {
@GetMapping("/hello")
public String hello() {
return "Spring Boot Security";
}
}
pom.xml文件
4.0.0 org.springframework.引导启动程序3.0.4 com.第一个应用程序spring-security 0.0.1-快照spring-security<java.version>17</java.version>org.springframework.引导启动程序spring-boot-starter-security org.springframework.引导启动程序spring-boot-starter-web
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
1条答案
按热度按时间ruarlubt1#
我在类MySecurityConfig上添加了Bean
之后它运行良好。