SpringBoot2.7 WebSecurityConfigurerAdapter类过期如何配置

发布时间:2022-06-18 09:48:39 作者:zzz
来源:亿速云 阅读:3693

SpringBoot2.7 WebSecurityConfigurerAdapter类过期如何配置

在Spring Boot 2.7版本中,WebSecurityConfigurerAdapter类被标记为过时(deprecated)。这意味着在未来的版本中,这个类可能会被移除。因此,开发者需要采用新的方式来配置Spring Security。本文将介绍如何在Spring Boot 2.7中替代WebSecurityConfigurerAdapter类进行安全配置。

1. 背景

WebSecurityConfigurerAdapter是Spring Security中用于配置Web安全的核心类。通过继承这个类,开发者可以自定义安全配置,例如配置认证、授权、CSRF保护等。然而,随着Spring Security的不断发展,WebSecurityConfigurerAdapter逐渐被认为过于复杂且不够灵活,因此在Spring Boot 2.7中被标记为过时。

2. 新的配置方式

在Spring Boot 2.7中,推荐使用SecurityFilterChain Bean来替代WebSecurityConfigurerAdapter。通过这种方式,开发者可以更灵活地配置安全过滤器链。

2.1 创建SecurityFilterChain Bean

首先,我们需要创建一个SecurityFilterChain Bean来替代WebSecurityConfigurerAdapter。以下是一个简单的示例:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeRequests(authorizeRequests ->
                authorizeRequests
                    .antMatchers("/public/**").permitAll()
                    .anyRequest().authenticated()
            )
            .formLogin(formLogin ->
                formLogin
                    .loginPage("/login")
                    .permitAll()
            )
            .logout(logout ->
                logout
                    .permitAll()
            );

        return http.build();
    }
}

在这个示例中,我们创建了一个SecurityFilterChain Bean,并通过HttpSecurity对象配置了安全规则。具体来说:

2.2 配置认证管理器

如果你需要配置认证管理器(例如使用内存认证或数据库认证),你可以通过创建一个UserDetailsService Bean来实现:

import org.springframework.context.annotation.Bean;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;

@Configuration
public class UserDetailsConfig {

    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("password")
            .roles("USER")
            .build();

        return new InMemoryUserDetailsManager(user);
    }
}

在这个示例中,我们创建了一个UserDetailsService Bean,并使用内存认证方式配置了一个用户。

2.3 配置CSRF保护

如果你需要配置CSRF保护,可以通过HttpSecurity对象来实现:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
        .csrf(csrf ->
            csrf
                .ignoringAntMatchers("/public/**")
        )
        .authorizeRequests(authorizeRequests ->
            authorizeRequests
                .antMatchers("/public/**").permitAll()
                .anyRequest().authenticated()
        )
        .formLogin(formLogin ->
            formLogin
                .loginPage("/login")
                .permitAll()
        )
        .logout(logout ->
            logout
                .permitAll()
        );

    return http.build();
}

在这个示例中,我们配置了CSRF保护,并忽略了/public/**路径下的请求。

3. 总结

在Spring Boot 2.7中,WebSecurityConfigurerAdapter类被标记为过时,推荐使用SecurityFilterChain Bean来配置Spring Security。通过这种方式,开发者可以更灵活地配置安全过滤器链,并且代码更加简洁和易于维护。希望本文能够帮助你顺利迁移到新的配置方式。

推荐阅读:
  1. SpringBoot配置类编写
  2. ssl证书会过期吗?如果过期了怎么办?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

springboot websecurityconfigureradapter

上一篇:Swift中的类型占位符怎么使用

下一篇:服务器SVN搭建安装的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》