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

Spring Boot 3中Basic Auth禁用失效及随机密码问题咨询

彻底禁用Spring Boot 3中的Basic Auth并消除随机密码警告

问题根源

你看到的随机密码警告来自UserDetailsServiceAutoConfiguration,和禁用Basic Auth的操作无关。Spring Security的自动配置逻辑是:只要引入了spring-boot-starter-security依赖,且容器里没有自定义的UserDetailsService、AuthenticationManager这类核心认证Bean,就会自动生成默认用户(用户名user)和随机密码——哪怕你已经禁用了Basic Auth的认证过滤器,这个自动生成用户的逻辑还是会触发。

解决办法

有两种靠谱的方式可以彻底解决这个问题:

方法一:直接排除用户自动配置类

在启动类上添加exclude属性,把生成默认用户的自动配置类排除掉:

package com.derbyware.registration;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration;

@SpringBootApplication(exclude = {UserDetailsServiceAutoConfiguration.class})
public class RegistrationApplication {

    public static void main(String[] args) {
        SpringApplication.run(RegistrationApplication.class, args);
    }
}

方法二:自定义空的UserDetailsService(适合后续扩展)

如果之后可能需要添加认证逻辑,这种方式更灵活。在你的配置类里加一个空实现的UserDetailsService Bean,Spring就不会触发默认用户生成逻辑了:

package com.derbyware.registration.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.CorsConfigurationSource;

import java.util.List;

@Configuration
public class ProjectConfig {

    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(auth ->
                        auth.requestMatchers("/register", "/registerCaptcha").permitAll()
                            .anyRequest().denyAll()
                )
                .csrf(csrf -> csrf.disable())
                .httpBasic(httpBasic -> httpBasic.disable())
                .cors(cors -> {
                    CorsConfigurationSource source = request -> {
                        CorsConfiguration config = new CorsConfiguration();
                        config.setAllowedOrigins(List.of("http://localhost:4001", "http://127.0.0.1:4001"));
                        config.setAllowedMethods(List.of("*"));
                        config.setAllowedHeaders(List.of("*"));
                        return config;
                    };
                    cors.configurationSource(source);
                });
        return http.build();
    }

    @Bean
    public UserDetailsService userDetailsService() {
        return username -> {
            throw new UsernameNotFoundException("未配置任何用户");
        };
    }
}

验证结果

修改完重启应用,Using generated security password的警告会消失,同时Basic Auth已经被彻底禁用,你设置的接口权限规则依然正常生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:10:59