首页 > 其他分享 >Spring Security6 升级高版本解决方案

Spring Security6 升级高版本解决方案

时间:2024-11-06 12:44:45浏览次数:5  
标签:return csrf Spring boot requestMatchers anonymous 解决方案 new Security6

目录

废弃WebSecurityConfigurerAdapter

spring security中WebSecurityConfigurerAdapter弃用配置AuthenticationManagerBuilder

Spring Security6配置方法

参考代码

部分pom.xml配置

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.4</version>
</parent>

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
</dependencies>

SecurityConfig.java

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
@Slf4j
public class SecurityConfig {
    @Resource
    private LoginFilter loginFilter;
    @Resource
    private UserMapper userMapper;


    @Bean
    public UserDetailsService userDetailsService() {
        return new UserDetailsService() {
            @Override
            public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
                log.info("从数据库中拿 {} 用户信息", username);
                LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>().eq(User::getUsername, username);
                User user = userMapper.selectOne(queryWrapper);
                if (user == null) {
                    throw new UsernameNotFoundException(username);
                }
                return new CustomDetailsUser(user);
            }
        };
    }

    @Bean
    AuthenticationManager authenticationManager() {
        DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
        daoAuthenticationProvider.setUserDetailsService(userDetailsService());
        daoAuthenticationProvider.setPasswordEncoder(new BCryptPasswordEncoder(10));
        return new ProviderManager(daoAuthenticationProvider);
    }

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                // 关闭csrf
                .csrf(csrf -> csrf.disable())
                // 不通过session获取SecurityContext
                .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                .authorizeHttpRequests(auth -> {
                    // 允许登录接口匿名访问
                    auth.requestMatchers("/user/login").anonymous()
                            // 允许接口文档匿名访问
                            .requestMatchers("/v3/api-docs/**").anonymous()
                            .requestMatchers("/doc.html/**").anonymous()
                            .requestMatchers("/swagger-ui/**").anonymous()
                            .requestMatchers("/webjars/**").anonymous()
                            // 除上述之外的全部请求都需要鉴权认证
                            .anyRequest().authenticated();
                });


        // 增加过滤器
        http.addFilterBefore(loginFilter, UsernamePasswordAuthenticationFilter.class);
        return http.build();
    }

}

标签:return,csrf,Spring,boot,requestMatchers,anonymous,解决方案,new,Security6
From: https://blog.csdn.net/qq_27516161/article/details/143566870

相关文章

  • 健身业务流程再造:SpringBoot管理系统
    摘要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了健身房管理系统的开发全过程。通过分析健身房管理系统管理的不足,创建了一个计算机管理健身房管理系统的方案。文章介绍了健身房管理系统的系统分析部分,包括可行性分析等,系......
  • SpringBoot体育科技运动综合信息平台eap6z 带论文文档1万字以上,文末可获取,系统界面在
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容;运动员,教练,场地类型,比赛场地,项目分类,比赛信息,比赛报名,教练组信息,计划类型,训练计划,检测信息开题报告内容一、项目背景与意义随着体育产业的......
  • SpringBoot同城搬家系统pmt0z 本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1
    题目:SpringBoot同城搬家系统pmt0z进度安排:(1)2024年11月1日-2024年11月15日 确定选题,下达任务书,撰写开题报告;(2)2024年11月15日-2024年12月20日提交开题报告定稿;(3)2024年12月21日-2025年3月14日 完成选题的设计、论文大纲的撰写;(4)2025年3月15日-2025年3月21日  毕业(设......
  • # Spring学习
    Spring1、Spring是什么?Spring是一个开源的Java平台框架,用于简化企业应用开发。它提供了一个全面的编程和配置模型,适用于基于Java的企业应用。Spring框架的核心功能包括依赖注入(DI)、面向切面编程(AOP)支持、事务管理等。它还提供了与多种其他框架和技术的集成,如MyBati......
  • SpringBoot听见你的声音心理咨询网站631x5 带论文文档1万字以上,文末可获取
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,导师,问题讲解,文章推荐,每日话题,导师信息,问题咨询,导师解答,咨询评价开题报告内容一、研究背景与意义在当今快节奏、高压力的社会环境中,心理......
  • SpringBoot天元车业仓储物流管理系统k3o76 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:出库管理员,入库管理员,车辆信息,客户信息,供应商,信息上报,货物信息,货物入库,货物出库,物流信息开题报告内容一、项目背景随着全球经济一体化的加速......
  • w021基于Springboot的校园周边美食探索及分享平台的设计与实现
    ......
  • 【Spring IoC&DI】路径扫描,DI依赖注入
    【路径扫描】Spring注重路径,约定大于配置例如,这个路径下,Spring默认会去扫描下【com.baiye.ioc】下面所有类中加了五大注解的路径,不在这个路径下是默认不会去扫描的即:Spring默认的扫描路径是——启动类所在的目录及其子目录但,当启动类放到Service包中时,扫描路径就变成了......
  • 【Spring IoC&DI】IoC容器,IoC注解,Bean的使用
    【Spring核心思想:IoC】spring是一个开源框架,支持广泛的应用场景,简而言之:Spring是包含了众多工具方法的IoC容器【IoC】IoC的意思是「控制反转」,也就是说Spring是一个“控制反转”的容器通用程序的实现代码,类的创建顺序是反的,如果想改tire需要连同之前的一起改,很麻烦改......
  • SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext
     SpringBoot的启动流程可以分为几个重要的步骤,其中之一是引导上下文(BootstrapContext)。引导上下文是在SpringBoot应用程序启动时创建的第一个Spring应用程序上下文,它负责加载和初始化SpringBoot的核心组件和配置。默认的引导上下文是通过DefaultBootstrapContext类来实现......