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

Spring Boot Actuator端点无法访问及系列问题排查求助

问题1:Actuator端点跳转到登录页

默认Spring Security会拦截所有请求,包括Actuator端点。需在Security配置中明确放行目标端点或配置对应访问权限:

@Configuration
public class WebSecurityConfiguration {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                // 放行无需认证的Actuator基础端点
                .requestMatchers("/actuator/health", "/actuator/info").permitAll()
                // 其他Actuator端点需认证(按需调整)
                .requestMatchers("/actuator/**").authenticated()
                // 其他请求的权限规则
                .anyRequest().authenticated()
            )
            .formLogin(form -> form
                .loginPage("/showMyLoginPage")
                .permitAll()
            );
        return http.build();
    }
}

注意:若通过management.endpoints.web.base-path修改了Actuator基础路径(如设为/manage),需将/actuator/**替换为对应路径


问题2:/health返回{"status":"DOWN"}且报数据源配置缺失

Actuator健康检查默认会校验所有自动配置的健康指示器,数据源是其中之一。两种解决方式:

  1. 配置有效数据源(若应用依赖数据库):
    在application.properties中添加数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=db_username
spring.datasource.password=db_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  1. 关闭数据源健康检查(若应用无需数据库):
management.health.db.enabled=false

可选:调整健康检查展示模式,仅返回状态不显示详情

management.endpoint.health.show-details=never
management.endpoint.health.show-components=never

问题3:修改WebSecurityConfiguration时出现授权方式冲突

Spring Boot 2.7.x已弃用WebSecurityConfigurerAdapter,需使用SecurityFilterChain Bean配置权限,避免混用旧语法导致冲突。正确配置示例:

@Configuration
public class WebSecurityConfiguration {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .csrf(csrf -> csrf.disable()) // 按需开启/关闭CSRF
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/showMyLoginPage", "/actuator/health", "/actuator/info").permitAll()
                .requestMatchers("/actuator/**").hasRole("ADMIN")
                .anyRequest().authenticated()
            )
            .formLogin(form -> form
                .loginPage("/showMyLoginPage")
                .defaultSuccessUrl("/home")
                .permitAll()
            )
            .logout(logout -> logout.permitAll());
        return http.build();
    }

    // 按需配置内存用户(或替换为数据库用户逻辑)
    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("password")
            .roles("USER")
            .build();
        UserDetails admin = User.withDefaultPasswordEncoder()
            .username("admin")
            .password("admin")
            .roles("ADMIN")
            .build();
        return new InMemoryUserDetailsManager(user, admin);
    }
}

若出现冲突报错,检查是否存在多个SecurityFilterChain Bean或遗留的WebSecurityConfigurerAdapter子类,删除冗余配置即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:46:32