You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何停止Spring Security自动生成密码?自定义实现代码无效

解决Spring Security自动生成密码的问题

你已经实现了自定义UserDetailsService但仍出现自动生成密码的情况,核心原因是Spring Security仍在使用默认的内存用户配置,没有正确绑定你的自定义实现。以下是解决步骤:

1. 编写Security配置类,绑定自定义UserDetailsService

创建Spring Security配置类,显式指定使用你的用户服务和密码编码器,替代默认配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    private final CustomUserServiceImplementation userDetailsService;

    // 构造注入自定义UserDetailsService
    public SecurityConfig(CustomUserServiceImplementation userDetailsService) {
        this.userDetailsService = userDetailsService;
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .anyRequest().authenticated() // 所有请求需要认证
            )
            .formLogin(form -> form.permitAll()) // 允许所有人访问登录页
            .logout(logout -> logout.permitAll()); // 允许所有人访问登出页
        return http.build();
    }

    @Bean
    public AuthenticationProvider authenticationProvider() {
        DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
        // 绑定自定义UserDetailsService
        authProvider.setUserDetailsService(userDetailsService);
        // 设置密码编码器,根据实际加密方式选择
        authProvider.setPasswordEncoder(passwordEncoder());
        return authProvider;
    }

    @Bean
    public PasswordEncoder passwordEncoder() {
        // 生产环境推荐使用BCrypt加密
        return new BCryptPasswordEncoder();
        // 测试时若用明文密码,可临时使用(不推荐生产):
        // return NoOpPasswordEncoder.getInstance();
    }
}

2. 关键注意事项

  • 确保你的CustomUserServiceImplementation类名遵循Java驼峰命名规范(首字母大写),Spring能正确扫描到@Service注解
  • 数据库中存储的用户密码必须是对应PasswordEncoder加密后的字符串,比如用BCryptPasswordEncoder加密后的结果
  • 确认UserRepository的findByEmail方法能正确从数据库查询到用户

完成以上配置后,Spring Security会使用你的自定义用户服务加载用户,不再生成默认的随机密码。

内容的提问来源于stack exchange,提问作者Mohammed Fazil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:16:07