0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Spring Security 的关键配置

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-09-30 16:10 次阅读

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.authorizeHttpRequestspermitAll 来实现。

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

    文章

    332

    浏览量

    14161
  • 过滤器
    +关注

    关注

    1

    文章

    407

    浏览量

    18991
  • Spring Security
    +关注

    关注

    0

    文章

    2

    浏览量

    5431
收藏 人收藏

    评论

    相关推荐

    java spring教程

    java spring教程理解Spring 实现原理掌握Spring IOC,AOP掌握Spring的基础配置和用法熟练使用SSH开发项目
    发表于 09-11 11:09

    什么是java spring

    的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个容器,它包含并且管理系统对象的生命周期和
    发表于 09-11 11:16

    使用阿里云ACM简化你的Spring Cloud微服务环境配置管理

    摘要: 本文我们就如何使用阿里云ACM这样的配置管理产品在Spring Cloud中替代Spring Cloud Config帮助简化环境配置管理做一个简单的示例,帮助你理解基于ACM
    发表于 07-04 17:16

    Spring Cloud Config公共配置解决方案

    Spring Cloud Config 多服务公共配置
    发表于 08-30 09:05

    spring log配置文件概述

    一份不知道抄了多少个地方的spring log配置文件
    发表于 10-12 15:00

    spring4的配置文件解析

    spring4配置文件详解
    发表于 06-19 11:02

    MVC框架实例—Spring MVC配置

    本文旨在让您在使用Spring MVC框架配置完成日常工作的时候更加轻松。根据Spring MVC框架配置,为基于本技术开发的项目提供一系列的解决方案。
    发表于 12-14 17:37 3104次阅读

    基于Spring Security安全框架的联通资源管理系统安全分析

    基于为联通资源管系统提供一个方便可靠的安全框架的目的,采用面向切面编程(AOP)的Spring Security安全框架,结合了Spring框架提供的控制反转技术,最终创建了一个功能强大、安全可
    发表于 05-14 11:56 0次下载
    基于<b class='flag-5'>Spring</b> <b class='flag-5'>Security</b>安全框架的联通资源管理系统安全分析

    Spring应用 1 springXML配置说明

    Spring应用 1 springXML配置说明 隐式对Spring容器注册Process   context:annotation-config / 为了在spring开发过程中,为
    发表于 01-13 12:20 313次阅读

    spring配置方式详细介绍

    SH框架风靡整个IT行业,而作为该框架中的管理员,Spring负责管理其他的框架,协调各个部分的工作。那么今天小编就带大家一起学习Spring配置方法。
    发表于 01-28 10:53 1320次阅读

    微服务配置中心实战:Spring + MyBatis + Druid + Nacos

    在 结合场景谈服务发现和配置 中我们讲述了 Nacos 配置中心的三个典型的应用场景,包括如何在 Spring Boot 中使用 Nacos 配置中心将数据库连接信息管控起来,而在“原
    发表于 12-29 17:09 924次阅读
    微服务<b class='flag-5'>配置</b>中心实战:<b class='flag-5'>Spring</b> + MyBatis + Druid + Nacos

    Spring认证」Spring IoC 容器

    Spring 容器是 Spring 框架的核心容器将创建对象,将它们连接到配置中,并管理它们从创建到成熟的生命周期。Spring 容器使用 DI 来管理构建应用程序的组件。
    的头像 发表于 06-28 13:27 505次阅读
    「<b class='flag-5'>Spring</b>认证」<b class='flag-5'>Spring</b> IoC 容器

    Spring认证是什么?

    ,例如:配置、组件扫描、AOP、数据访问和事务、REST、安全、自动配置、执行器、 Spring boot测试等。
    的头像 发表于 07-04 10:19 1079次阅读
    <b class='flag-5'>Spring</b>认证是什么?

    为什么使用spring-authorization-server?

    官方原因:原先使用Spring Security OAuth,而该项目已经逐渐被淘汰,虽然网上还是有不少该方案,但秉着技术要随时代更新,从而使用spring-authorization-server
    的头像 发表于 01-09 15:27 1517次阅读

    Spring Boot 3.1 中如何整合Spring Security和Keycloak

    虽然Keycloak 团队宣布了不再对Spring Security提供适配,但Spring Security长期以来一直为OAuth和OIDC提供强大的内置支持。所以,只要我们理解
    的头像 发表于 06-08 14:54 721次阅读
    <b class='flag-5'>Spring</b> Boot 3.1 中如何整合<b class='flag-5'>Spring</b> <b class='flag-5'>Security</b>和Keycloak