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

升级至最新Spring Security:替换已废弃方法

Spring Security废弃方法改写及疑问解答

改写后的代码

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return http
            // 禁用CSRF
            .csrf(csrf -> csrf.disable())
            // 统一配置请求授权规则
            .authorizeHttpRequests(auth -> auth
                    .requestMatchers("/api/**", "/signup/", "/signin/").permitAll()
                    .requestMatchers("/api/search/", "/api/profile/", "/signout/").authenticated()
            )
            // 配置无状态会话
            .sessionManagement(session -> session
                    .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            )
            .authenticationProvider(authenticationProvider())
            .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class)
            .build();
}

疑问解答

  • Q1:React前端连接Spring Boot后端,能否直接移除CSRF?
    可以直接禁用。因为你用的是JWT无状态认证(STATELESS会话策略),CSRF攻击依赖浏览器自动携带会话Cookie的特性,而JWT由前端主动在请求中携带,不存在会话Cookie被浏览器自动附加的场景,所以不需要CSRF保护。

  • Q2:能否用authorizeRequests()替代authorizeHttpRequests()?
    不行。authorizeRequests()是比authorizeHttpRequests()更旧的废弃方法,Spring Security 6.x+已不再推荐使用。应该采用上面代码中的lambda风格配置authorizeHttpRequests,把所有授权规则统一放在一个配置块里,避免多次链式调用。

  • Q3:用什么替代sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)?
    使用lambda表达式写法:sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)),这是Spring Security 6.x+的标准配置方式,替代了原来的链式调用语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:05:15