Spring Security无法关闭自动密码生成及认证异常问题求助
问题分析
排除UserDetailsServiceAutoConfiguration后,Spring Security不再自动配置DaoAuthenticationProvider——这个组件是处理UsernamePasswordAuthenticationToken的核心认证提供者,它依赖UserDetailsService和PasswordEncoder完成用户校验逻辑。虽然你已经定义了这两个Bean,但未将它们注册到认证体系中,导致系统找不到对应的AuthenticationProvider。
解决方案
以下两种方式任选其一即可:
方式一:手动配置DaoAuthenticationProvider
修改SecurityConfig类,添加DaoAuthenticationProvider的Bean定义,并将其关联到你的UserDetailsService和PasswordEncoder,最后注入到HttpSecurity中:
@EnableWebSecurity @Configuration public class SecurityConfig { @Autowired Securityhandler successHandler; @Bean public UserDetailsService userDetailsService() { return new UserDetailsServiceImpl(); } @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } // 新增:配置认证提供者 @Bean public DaoAuthenticationProvider authenticationProvider() { DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider(); authProvider.setUserDetailsService(userDetailsService()); authProvider.setPasswordEncoder(passwordEncoder()); return authProvider; } @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authConfig) throws Exception { return authConfig.getAuthenticationManager(); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { // 将认证提供者加入HttpSecurity http.authenticationProvider(authenticationProvider()); return http.csrf((csrf)->csrf.disable()) .authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated()) .httpBasic(Customizer.withDefaults()) .build(); } }
方式二:通过配置关闭默认用户生成(无需排除AutoConfiguration)
如果不想手动配置Provider,可以保留UserDetailsServiceAutoConfiguration,仅通过配置文件关闭自动生成默认用户的功能,这样既能禁用自动密码生成,又能保留Spring自动配置的认证提供者:
在application.properties中添加:
spring.security.user.enabled=false
然后移除启动类上的@SpringBootApplication(excludes = UserDetailsServiceAutoConfiguration.class)注解。
额外检查项
- 确认
UserRepository.getUserByUsername(username)能正常从数据库查询到用户数据 - 数据库中存储的密码必须是
BCryptPasswordEncoder加密后的字符串,明文密码会导致认证失败 - 检查
MyUserDetails中的isEnabled()等状态方法返回值是否符合业务逻辑(比如用户是否被禁用)
内容的提问来源于stack exchange,提问作者Natasha
相关产品推荐
相关产品推荐

