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

Spring Boot Security部署Tomcat WAR时FilterChain未触发问题求助

问题排查与解决方案

针对Spring Boot 2.7.5打包WAR部署到Tomcat 8.5后Security配置不生效的问题,按以下步骤排查:

1. 完善WAR打包的入口类配置

外部Tomcat部署WAR时,必须让Spring Boot应用正确初始化,主应用类需要继承SpringBootServletInitializer并覆盖configure方法:

@SpringBootApplication
public class YourApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(YourApplication.class);
    }

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

缺少该配置会导致Spring上下文无法正常加载,进而使Security配置失效。

2. 确认配置类的扫描范围

确保WebSecurityConfig所在包被Spring组件扫描覆盖:

  • @SpringBootApplication默认扫描自身包及子包,若WebSecurityConfig在其他路径下,需添加@ComponentScan指定扫描路径,示例:
    @SpringBootApplication
    @ComponentScan(basePackages = {"com.your.config", "com.your.controller"})
    public class YourApplication {
        // ...
    }
    

3. 验证Tomcat部署后的访问路径

Tomcat部署WAR后,应用上下文路径默认与WAR包名一致(如WAR名为demo-app.war,上下文路径为/demo-app),此时正确访问路径应为:

http://your-tomcat-ip:8080/demo-app/api/hello/hi

若直接访问http://your-tomcat-ip:8080/api/hello/hi,请求会匹配Tomcat默认上下文,触发Tomcat自身的认证拦截,返回Full authentication is required to access this resource。

4. 排查Security自动配置冲突

检查主应用类是否误排除了Spring Security自动配置,比如存在@SpringBootApplication(exclude = SecurityAutoConfiguration.class),这种配置会导致自定义Security规则无法生效。

额外验证步骤

在WebSecurityConfig中添加初始化日志,确认配置类是否被实例化:

@EnableWebSecurity
@Configuration
public class WebSecurityConfig {

    public WebSecurityConfig() {
        System.out.println("WebSecurityConfig 已初始化");
    }

    // 原有filterChain配置...
}

部署后查看Tomcat日志,若没有该输出,说明配置类未被Spring加载,需重新检查扫描范围。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:30:58