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

Spring Security环境下JS加载返回302状态问题求助

问题原因及解决方案

核心问题:静态资源未被Spring Security正确放行

你的MvcConfig配置了/static/**映射到classpath:/static/,但Spring Security的requestMatchers里只放行了/resources/**,导致浏览器请求JS文件时被Security拦截,触发重定向到登录页(返回302状态码)。Postman能正常请求REST接口是因为/add和/listOfUsers已经被放行,但静态资源请求没被允许。

解决方案步骤

1. 修正Spring Security的静态资源放行规则

修改WebSecurityConfig中authorizeHttpRequests的requestMatchers,把/resources/**替换为/static/**:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
            .csrf().disable()
            .authorizeHttpRequests((requests) -> requests
                    // 替换/resources/**为/static/**,匹配静态资源路径
                    .requestMatchers("/", "/welcome", "/registration", "/admin", "/static/**", "/add", "/listOfUsers" ).permitAll()
                    .anyRequest().authenticated()
            )
            .formLogin((form) -> form
                    .loginPage("/login")
                    .permitAll()
            )
            .logout((logout) -> logout.permitAll());

    return http.build();
}

2. 确保HTML页面中JS的引用路径正确

比如你的JS文件放在src/main/resources/static/js/xxx.js,那么HTML中应该这样引用:

<script src="/static/js/xxx.js"></script>

路径要和MvcConfig中配置的/static/**对应。

3. 修复BackendController的依赖注入问题

你的passwordEncoder没有添加@Autowired注解,会导致调用passwordEncoder.encode()时出现空指针异常,需要补充注入:

@RestController
public class BackendController {
    @Autowired
    private UserRepository userRepository;

    // 添加@Autowired注入PasswordEncoder
    @Autowired
    private PasswordEncoder passwordEncoder;

    // 其余代码不变...
}

4. 额外优化:统一静态资源路径匹配(可选)

如果习惯用/resources/**作为静态资源访问路径,可以修改MvcConfig的addResourceHandlers,保持和Security配置一致:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry
            .addResourceHandler("/resources/**")
            .addResourceLocations("classpath:/static/");
}

同时HTML中引用路径改为/resources/js/xxx.js,这样也能解决问题,选一种统一的路径规则即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:41:03