【Spring Security】基于SpringBoot3.3.4版本②如何配置免鉴权Path

基于Spring Boot 3.3.4,详细说明Spring Security 6.3.3的使用

  • 摘要
  • 本地开发环境说明
  • SecurityFilterChain介绍
  • application.yml
  • Wen3SecurityProperties.java
  • 修改DemoWen3Security
  • 修改SecurityFilterChain
  • IgnoredPathController.java
  • IgnoredPathController2.java
  • 启动工程
  • 测试
    • 测试免鉴权Path
    • 接口响应
    • 测试鉴权Path
    • 接口响应
  • 总结

摘要

【Spring Security】基于SpringBoot3.3.4版本①整合JWT的使用教程
在这篇文章中,详细演示了使用最新版Spring Boot,完成一个微服务开发,并使用Spring Security组件完成登录认证,同时整合了JWT,使用的RSA公私钥签名、验签。

接下来继续讲解下一个业务场景:一个真实场景的微服务,难免会有一些请求Path不需要任何鉴权,比如某些仅对内的API、允许匿名访问的资源等等。那么,如何在Spring Security体系中,把这些免鉴权Path绕过认证呢?并且可以灵活的配置呢?

接下来让我就带着你一起解决这个业务场景中的问题吧!

本地开发环境说明

开发用到的主要框架、工具版本如下

开发依赖 版本
Spring Boot 3.3.4
Spring Security 6.3.3
JDK 21
IntelliJ IDEA 2024.2.3

【Spring Security】基于SpringBoot3.3.4版本①整合JWT的使用教程 建议大家先阅读这篇文章,本文是对这篇文章的进一步扩展。

SecurityFilterChain介绍

我们在构建SecurityFilterChain的时候,可以通过authorizeHttpRequestsCustomizer.requestMatchers(HttpMethod.POST, "/login/common").permitAll()这种方式告诉Spring Security,对于/login/common这个path不需要鉴权,代码如下

    @Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
   
    Wen3SecurityProperties wen3SecurityProperties = wen3SecurityProperties();
    http.authorizeHttpRequests(authorizeHttpRequestsCustomizer -> {
   
        authorizeHttpRequestsCustomizer
                .requestMatchers(HttpMethod.POST, "/login/common").permitAll()
                .requestMatchers(HttpMethod.GET, "/login/verify").permitAll()
                .requestMatchers(new AntPathRequestMatcher("/**/test")).permitAll()
                .anyRequest().authenticated();
    });

    // token校验过滤器
    http.addFilterBefore(jwtFilter(), UsernamePasswordAuthenticationFilter.class);

    // 禁用表单提交 取消默认的登录页面
    http.formLogin(AbstractHttpConfigurer::disable);
    // 禁用注销 取消默认的登出页面
    http.logout(AbstractHttpConfigurer::disable)

http://www.niftyadmin.cn/n/5690265.html

相关文章

01:(寄存器开发)点亮一个LED灯

寄存器开发 1、单片机的简介1.1、什么是单片机1.2、F1系列内核和芯片的系统架构1.3、存储器映像1.4、什么是寄存器 2、寄存器开发模板工程3、使用寄存器点亮一个LED4、代码改进15、代码改进2 本教程使用的是STM32F103C8T6最小系统板,教程来源B站up“嵌入式那些事”。…

02:(寄存器开发)流水灯/按键控制LED

寄存器开发 1、LED流水灯2、按键控制LED 1、LED流水灯 通过第一章的学习,我们已然知晓了LED的点亮和熄灭的方式,下面学习流水灯的制作流程。 流水灯呈现的样子:就是第一个LED灯点亮,延迟一段时间,第一个LED灯熄灭第二…

Study-Oracle-10-ORALCE19C-RAC集群维护

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人。 一、RAC的逻辑架构与进程 1、RAC 与单实例进程的对比 2、RAC相关进程功能 3、在主机查看RAC进程 其他的不列举了 4、RAC集群启停命令 检查集群状态 ORACLE 19C …

项目-坦克大战笔记-墙体销毁以及人机销毁

在子弹撞到墙或者人机身上时会将碰撞到的墙体或者人机销毁 我们需要做到几点 检测子弹碰撞到的墙体或者人机将物体获取到 每帧遍历墙体列表与人机列表,检测被碰撞的墙,创建一个方法返回值为对应类型将被碰撞的物体返回出来 public static gudin wallp…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

Pikachu-Sql Inject-搜索型注入

MySQL的搜索语句: select * from table where column like %text%; 如:使用引号闭合左边的引号, or 11 把所有数据查询出来; # 注释掉后面的 引号等; test or 11# 查询出结果: 注入的核心点…

【CKA】十二、持久化存储卷PersistentVolume

12、持久化存储卷PersistentVolume 1. 考题内容: 2. 答题思路: 按题目要求检查各个参数,我就是第一次没看清楚,把ReadWriteOnce写成ReadWriteMany了,幸亏做完检查了一遍 这个参数可有可无,加上也不影响 …

小红书制作视频如何去原视频音乐,视频如何去原声保留背景音乐?

在视频编辑、音乐制作或个人娱乐中,有时我们希望去掉视频中的原声(如对话、解说等),仅保留背景音乐。这种处理能让观众更加聚焦于视频的氛围或节奏,同时也为创作者提供了更多创意空间。选择恰当的背景音乐,…