升级至最新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
相关产品推荐
相关产品推荐

