Springboot Security 5.7版本前后的配置
关于Springboot Security
Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验证选项和授权策略,开发人员可以根据需要选择适合的方式。此外,Spring Security还提供了一些附加功能,如集成第三方身份验证提供商和单点登录,以及会话管理和密码编码等。总之,Spring Security是一个强大且易于使用的框架,可以帮助开发人员提高应用程序的安全性和可靠性。
Spring Security是一个框架,提供 认证(authentication)、授权(authorization) 和 保护,以抵御常见的攻击。它对保护命令式和响应式应用程序有一流的支持,是保护基于Spring的应用程序的事实标准。
参考博客:点我跳转
平时在项目的开发过程当中,因为SpringbootSecurity 5.7版本之后对Config文件的配置做出了一些改变,导致之前的配置被弃用,那么新的配置应该怎么配置呢?
首先在Springboot的5.7版本当中,官方已经标注声明WebSecurityConfigurerAdapter已经过期,在学习的过程当中视频里还是用的老版本,老版本的配置一般为:
@Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean public PasswordEncoder passwordEncoder(){ return new BCryptPasswordEncoder(); } @Override protected void configure(HttpSecurity http) throws Exception { http //关闭csrf .csrf().disable() //不通过Session获取SecurityContext .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .authorizeRequests() // 对于登录接口 允许匿名访问 .antMatchers("/login").anonymous() // 除上面外的所有请求全部不需要认证即可访问 .anyRequest().permitAll(); http.logout().disable(); //允许跨域 http.cors(); } @Override @Bean public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } }
新版本的队友配置为:
@Configuration public class SecurityConfig { @Bean public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { return authenticationConfiguration.getAuthenticationManager(); } @Bean PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } @Bean SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // 关闭csrf保护 .csrf(AbstractHttpConfigurer::disable) // 设置session管理为无状态 .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 配置请求授权 .authorizeHttpRequests(auth -> auth // 对于登录接口允许匿名访问 .requestMatchers("/login").anonymous() // 其他所有请求允许访问 .anyRequest().permitAll() ) // 禁用登出功能 .logout(AbstractHttpConfigurer::disable) // 允许跨域 .cors(withDefaults()); return http.build(); } }
在Security 5.7版本之后,configure方法使用了securityFilterChain接收参数HttpSecurity来链式配置,这样子确实方便很多
Security流程图
需要注意的是---.cors()这个方法在6.1版本之后被遗弃,得在参数里面加上跨域的配置
这里我在WebConfig的配置类里实现了WebMvcConfigurer类接口的addCorsMappings方法
withDefaults()其实就是将SpringBoot的全局cors设置传到这个方法里面,由于在WebMvcConfigurer里addcors方法配置了SpringBoot的全局跨域方法,所以其实就是将实现类的参数运用到这个cors里.
@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOriginPatterns("*") .allowCredentials(true) .allowedHeaders("*") .allowedMethods("GET", "POST", "PUT", "DELETE") .maxAge(3600); } }
后续如果遇到版本之间用法的问题还是持续更新...接下来就是学习Security的使用和运行原理了.
本文作者:MingHaiZ
本文链接:https://www.cnblogs.com/MingHaiZ/p/18423411
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步