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

Spring Security配置后不登录无法访问静态资源,仅images目录可访问如何解决

问题根因

PathRequest.toStaticResources().atCommonLocations() 是Spring Boot提供的便捷配置,默认仅放行以下规则的静态资源请求:

  • /css/**
  • /js/**
  • /images/**
  • /webjars/**
  • 所有favicon相关资源
    你自行创建的其他静态资源文件夹不在默认放行列表中,因此只有images目录可以无权限访问,其他自定义静态路径会被拦截要求登录。
    另外你注释的.antMatchers("/resources/**").permitAll()不生效,是因为/resources是你本地源码的目录结构,Spring Boot默认不会将静态资源映射到带/resources前缀的访问路径,因此该规则匹配不到实际的静态资源请求。
解决方案

以下三种方案按需选择即可:

方案1:补充自定义路径放行规则

在现有Security配置的authorizeRequests段,添加你需要放行的自定义静态资源路径的匹配规则:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()    
        .requestMatchers(PathRequest.toStaticResources().atCommonLocations()).permitAll()
        // 按需添加你自己的静态资源路径,比如fonts、plugins、assets等
        .antMatchers("/fonts/**", "/plugins/**", "/assets/**").permitAll()        
        .anyRequest().authenticated()
        // 其余原有配置保持不变
}

方案2:全局忽略静态资源拦截(性能更优)

重写WebSecurity的配置方法,让Spring Security完全跳过静态资源的权限校验逻辑,适合静态资源不需要任何权限控制的场景:

@Override
public void configure(WebSecurity web) throws Exception {
    // 所有需要放行的静态资源路径统一配置在此处
    web.ignoring().antMatchers(
        "/css/**", 
        "/js/**", 
        "/images/**", 
        "/fonts/**", 
        "/plugins/**", 
        "favicon.ico"
    );
}

方案3:统一放行所有静态资源

如果你修改过Spring Boot的静态资源映射规则,也可以直接匹配所有静态资源的访问前缀,无需逐个配置:

// 假设你所有静态资源的访问路径都带/assets前缀,就配置对应的规则
.antMatchers("/assets/**").permitAll()
排查建议

如果配置完成后依然无法访问,可以先在application.properties中开启Spring Security的debug日志,定位请求被拦截的具体原因:

logging.level.org.springframework.security=DEBUG

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:57:03