当前位置: 首页 > news >正文

2025版spring security认证授权详解篇【经典】

目录

一  springsecurity 认证授权

1.1 总流程

1.2 关键代码详解

1.3 资料

二  详解流程

2.1 WebSecurityConfig中config方法的执行顺序

2.2.1 完整的执行流程

2.2.2 完整的代码

2.3 认证流程顺序

2.4 授权流程顺序

2.5 SecurityContextHolder

2.5.1 securityContextHolder的写入

2.5.2 securityContextHolder的获取

2.5.3 线程安全与请求清理*

2.5.4 总结

2.6 完整流程的详解


一  springsecurity 认证授权

1.1 总流程

1.阶段1:启动阶段:应用启动时的配置加载顺序;先执行WebSecurityConfig类;Configure(websecurity web) 最先执行,忽略某些请求

Configure(HttpSecurity http) 其次执行,如何保护请求。

Configure(AuthenticationManagerBuilder auth) 最后执行,用户数据从哪里来。Spring security中的websecurityconfig(通常是通过@Enablewebsecurity)注解的配置类)主要是在应用启动阶段执行的。它的核心作用是配置和初始化整个 Spring Security 的过滤器链,而不是在每次请求时都执行

2.阶段2:请求执行阶段:请求处理时执行顺序:先执行usernameandpaaswordauthenticationfilter进行表单认证;

然后通过filtersecurityinterceptor进行授权;期间抛出异常,则执行ExceptionTranslationFilter。ExceptionTranslationFilter 是一个非常重要的过滤器,它负责处理认证和授权过程中抛出的所有异常。

3.configure方法:在应用启动时执行,用于配置和构建安全过滤器链。

认证/授权过滤器:在每个请求到达时执行,是构建好的过滤器链中的一个个执行节点。

启动时configure(...) 方法执行 -> 构建过滤器链 ->运行时请求到达 -> 按链中顺序 先经过认证过滤器 -> 最后经过授权过滤器。

1.2 关键代码详解

1.在websecurityconfig类中加载各种认证,授权类。

2.其中authenticationManager()这个方法在父WebSecurityConfigurerAdapter中

3.其中这里注入的userDetailsService的实现类是UserDetailsServiceImpl

4.认证时候,自动加载通过用户名查询数据库信息。

1.3 资料

29-33 详细说明配置流程执行

https://www.bilibili.com/video/BV15a411A7kP/?spm_id_from=333.337.search-card.all.click&vd_source=34a329e9a5c6f9b4f5dcf2e9fc5bcd01

二  详解流程

2.1 WebSecurityConfig中config方法的执行顺序

2.2.1 完整的执行流程

WebSecurityConfigurerAdapter中有多个configure方法,它们的执行顺序和目的完全不同。加载和配置的总体顺序是:

Step1:configure(WebSecurity web)

执行时机:最早。用于配置全局的、忽略的安全规则。

作用:配置那些需要被 Spring Security完全忽略的请求(通常用于静态资源)。这些请求不会经过任何安全过滤器链。如下:

@Override

public void configure(WebSecurity web) throws Exception {

    web.ignoring().antMatchers("/css/**", "/js/**", "/images/**");

http://www.dtcms.com/a/473559.html

相关文章:

  • 第五十五章 ESP32S3 基于MQTT协议连接OneNet物联网开放平台
  • MySQL可重复读的级别下,幻读本质问题
  • MaixCam二维云台检测人脸项目
  • 无线收发系统结构
  • 做网站的工作是什么开发公司官网
  • Node.js 与 MongoDB:高效的数据管理解决方案
  • 网络层:从 IP 协议到路由转发
  • 做网站办什么营业执照nginx wordpress 伪静态
  • 深入理解TCP/IP通信:系统调用与零拷贝技术全面解析
  • 编程语言Delphi
  • 【AI论文】RLP:将强化学习作为预训练目标
  • Etcd使用
  • etcd实战课-实战篇(上)
  • Kubernetes 运维指南:kubectl 命令全解析
  • 网站logo关键字参数
  • ubuntu下桌面应用启动图标的内容文件
  • Leetcode 25
  • 西安博达网站建设自己制作wordpress plugin
  • OpenCV的数据类型二
  • Serdes专题(3)Lattice Serdes架构
  • 人形机器人项目中使用Ubuntu-Server安装桌面系统进行远程xrdp远程连接操作
  • 京东开源了一款大模型安全框架:JoySafety,说是京东内部已应用,实现95%+攻击拦截率
  • 【传奇开心果系列】基于Flet框架实现的关于页面创建和提供文件下载集成了网络请求、文件下载、剪贴板操作功能自定义模板特色和实现原理深度解析
  • ​为什么我们需要将Flow转换为StateFlow?​​
  • vscode远程连接云服务器的初次尝试
  • 甘肃网站开发公司用手机怎么做免费网站
  • 网站是由多个网页组成的吗济南网约车平台
  • Linux系统下的终端,会话,shell,bash,进程组这几个概念的关系。
  • 微信小程序入门学习教程,从入门到精通,自定义组件与第三方 UI 组件库(以 Vant Weapp 为例) (16)
  • 银河麒麟V10高级服务器版Bash快捷键经常失效