0. 概述
以前我们配置 SpringSecurity 的方式是继承 WebSecurityConfigurerAdapter
,然后重写其中的几个方法:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//配置 Spring Security 中的过滤器链
@Override
void configure(HttpSecurity http) {}
//配置路径放行规则
@Override
void configure(WebSecurity web) {}
//配置本地认证管理器
@Override
void configure(AuthenticationManagerBuilder auth) {}
//配置全局认证管理器
@Override
AuthenticationManager authenticationManagerBean() {}
}
目前这个类已经过期,虽然可以继续使用,但是总觉得别扭。那么它的替代方案是什么?下面我来为大家一一介绍。
1. HttpSecurity
原写法:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.antMatcher("/**")
.authorizeRequests(authorize - > authorize
.anyRequest().authenticated()
);
}
新写法:
@Bean
SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.antMatcher("/**")
.authorizeRequests(authorize - > authorize
.anyRequest().authenticated()
)
.build();
}
2. WebSecurity
原写法:
@Override
public void configure(WebSecurity web) {
web.ignoring().antMatchers("/ignore1", "/ignore2");
}
新写法:
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) - > web.ignoring().antMatchers("/ignore1", "/ignore2");
}
WebSecurity配置不常使用,如果需要忽略Url,推荐通过
HttpSecurity.authorizeHttpRequests
的permitAll
来实现。
3. AuthenticationManager
原写法:
@Autowired
private UserDetailsService userDetailsService;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
//Local
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
}
//Global
@Bean
@Override
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
新写法:
@Autowired
private UserDetailsService userDetailsService;
@Bean
public BCryptPasswordEncoder bCryptPasswordEncoder() {
return new BCryptPasswordEncoder();
}
//Local
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authz) - > authz
.anyRequest().authenticated()
)
.httpBasic(withDefaults())
.authenticationManager(new CustomAuthenticationManager());
}
//Global
@Bean
public AuthenticationManager authenticationManager(HttpSecurity httpSecurity) throws Exception {
return httpSecurity.getSharedObject(AuthenticationManagerBuilder.class)
.userDetailsService(userDetailsService)
.passwordEncoder(bCryptPasswordEncoder())
.and()
.build();
}
4. 心得
技术是不断迭代的,我们作为技术人员,不能墨守成规,要学会拥抱变化。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
spring
+关注
关注
0文章
340浏览量
14334 -
过滤器
+关注
关注
1文章
427浏览量
19591 -
Spring Security
+关注
关注
0文章
2浏览量
5455
发布评论请先 登录
相关推荐
什么是java spring
的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个容器,它包含并且管理系统对象的生命周期和
发表于 09-11 11:16
MVC框架实例—Spring MVC配置
本文旨在让您在使用Spring MVC框架配置完成日常工作的时候更加轻松。根据Spring MVC框架配置,为基于本技术开发的项目提供一系列的解决方案。
发表于 12-14 17:37
•3173次阅读
基于Spring Security安全框架的联通资源管理系统安全分析
基于为联通资源管系统提供一个方便可靠的安全框架的目的,采用面向切面编程(AOP)的Spring Security安全框架,结合了Spring框架提供的控制反转技术,最终创建了一个功能强大、安全可
发表于 05-14 11:56
•0次下载
Spring应用 1 springXML配置说明
Spring应用 1 springXML配置说明 隐式对Spring容器注册Process context:annotation-config / 为了在spring开发过程中,为
发表于 01-13 12:20
•385次阅读
spring配置方式详细介绍
SH框架风靡整个IT行业,而作为该框架中的管理员,Spring负责管理其他的框架,协调各个部分的工作。那么今天小编就带大家一起学习Spring的配置方法。
发表于 01-28 10:53
•1425次阅读
微服务配置中心实战:Spring + MyBatis + Druid + Nacos
在 结合场景谈服务发现和配置 中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原
发表于 12-29 17:09
•1101次阅读
「Spring认证」Spring IoC 容器
Spring 容器是 Spring 框架的核心容器将创建对象,将它们连接到配置中,并管理它们从创建到成熟的生命周期。Spring 容器使用 DI 来管理构建应用程序的组件。
为什么使用spring-authorization-server?
官方原因:原先使用Spring Security OAuth,而该项目已经逐渐被淘汰,虽然网上还是有不少该方案,但秉着技术要随时代更新,从而使用spring-authorization-server
Spring Boot 3.1 中如何整合Spring Security和Keycloak
虽然Keycloak 团队宣布了不再对Spring Security提供适配,但Spring Security长期以来一直为OAuth和OIDC提供强大的内置支持。所以,只要我们理解
Spring Boot配置加载相关知识
有: --server.port:指定应用程序的端口号。 --spring.profiles.active:设置应用程序使用的配置文件中的环境配置。 --spring.config.a
评论