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

郑州效果图设计广州seo工程师

郑州效果图设计,广州seo工程师,导游网站如何建设的,商业模式顶层设计案例以下是 Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结: 1. Spring Security 核心原理 Spring Security 通过 Filter 链 实现安全控制,其核心流程如下&#xff1a…

以下是 Spring Boot 3.x 下 Spring Security 的执行流程、核心类和原理详解,结合用户描述的关键点展开说明,并以表格总结:


1. Spring Security 核心原理

Spring Security 通过 Filter 链 实现安全控制,其核心流程如下:

  1. 启动阶段
    • 引入 spring-boot-starter-security 后,Spring Boot 自动配置 SecurityAutoConfiguration
    • 通过 @EnableWebSecurity 注解触发安全框架的初始化,创建 SecurityFilterChain Bean(名称为 springSecurityFilterChain)。
  2. Filter 注册
    • DelegatingFilterProxy 拦截所有请求,从 Spring 容器中获取 springSecurityFilterChain(类型 FilterChainProxy)。
    • FilterChainProxy 管理多个 Filter 对象(如 UsernamePasswordAuthenticationFilterCsrfFilter 等),按顺序执行拦截逻辑。
  3. 请求处理
    • 每个请求经过 FilterChainProxydoFilter() 方法,依次调用拦截器链中的 Filter,完成认证、授权、CSRF 防护等功能。

2. 关键类与流程详解

(1) Spring Security 启动流程
  1. 依赖引入

    <!-- Maven 依赖 -->
    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
    • 引入后,Spring Boot 自动启用 SecurityAutoConfiguration
  2. Bean 创建

    • @EnableWebSecurity 注解触发 WebSecurityConfiguration,创建 SecurityFilterChain Bean(名称 springSecurityFilterChain)。
    • SecurityFilterChain 实际类型为 FilterChainProxy,包含多个 Filter 对象。
  3. 自动配置日志

    Using generated security password: <random-generated-password>
    
    • 默认启用安全配置时,Spring Boot 会生成随机密码(可通过 management.security.enabled=false 禁用)。

(2) 核心类与协作关系
类名作用关键方法/属性
FilterChainProxy核心过滤器链,管理所有安全 Filter 的执行顺序。getFilters():获取 Filter 列表
DelegatingFilterProxyServlet 容器的适配器,将请求委托给 Spring 容器中的 FilterChainProxyinitFilterBean():初始化并获取 Bean
SecurityFilterChain安全过滤器链的抽象接口,由 FilterChainProxy 实现。getFilters():定义 Filter 顺序
WebSecurityConfigurerAdapter过时配置类(Spring Boot 2.x),现改用 SecurityFilterChain Bean。已弃用,需改用 @Bean SecurityFilterChain
UsernamePasswordAuthenticationFilter处理表单登录认证的 Filter。attemptAuthentication():验证用户凭证
CsrfFilter处理 CSRF 令牌生成与验证。getToken():获取 CSRF Token

(3) FilterChainProxy 的执行流程
  1. 初始化
    • 通过 DelegatingFilterProxy 从 Spring 容器获取 springSecurityFilterChain Bean。
  2. 请求拦截
    • 每个请求到达 DelegatingFilterProxy 后,调用 FilterChainProxydoFilter() 方法。
    • FilterChainProxy 遍历 filters 列表,按顺序执行每个 Filter 的 doFilter()
  3. Filter 顺序
    • 默认顺序由 SecurityFilterChain 定义(如:ChannelProcessingFilterWebAsyncManagerIntegrationFilter → …)。
    • 可通过 SecurityFilterChain 自定义 Filter 顺序。

(4) 配置注解对比
注解适用场景功能
@EnableWebSecurityWeb 应用启用安全配置,创建 SecurityFilterChain,集成 Web 特性(如表单登录)。
@EnableGlobalAuthentication非 Web 应用(如消息服务)仅启用认证功能,不包含 Web 相关 Filter(如 CSRF、表单登录)。
@EnableMethodSecurity方法级安全控制启用 @PreAuthorize@PostFilter 等注解。

3. 自定义 Filter 的实现

(1) 创建自定义 Filter
@Component
public class CustomFilter implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {// 自定义逻辑(如 Token 解析)chain.doFilter(request, response);}
}
(2) 注册到 FilterChainProxy
@Configuration
public class SecurityConfig {@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {http.addFilterBefore(new CustomFilter(), UsernamePasswordAuthenticationFilter.class);return http.build();}
}

4. Spring Boot 3.x 特殊说明

  • 自动配置变化
    • Spring Boot 3.x 中 WebSecurityConfigurerAdapter 已弃用,需通过 @Bean SecurityFilterChain 直接配置。
  • 日志控制
    • 随机密码日志可通过 logging.level.org.springframework.security=ERROR 禁用。

5. 总结表格

模块/组件作用关键类/注解
启动与配置初始化安全框架,创建 Filter 链@EnableWebSecuritySecurityAutoConfigurationSecurityFilterChain
Servlet 适配将 Servlet 请求委托给 Spring 容器中的 Filter 链DelegatingFilterProxy
Filter 链管理管理 Filter 顺序和执行逻辑FilterChainProxySecurityFilterChain
认证与授权用户身份验证、权限控制UsernamePasswordAuthenticationFilterRoleVoterAccessDecisionManager
扩展与自定义注册自定义 Filter 或修改安全策略addFilterBefore()addFilterAfter()@Bean SecurityFilterChain

6. 执行流程图(文字描述)

  1. 请求到达 Web 容器DelegatingFilterProxy获取 springSecurityFilterChainFilterChainProxy遍历并执行所有 Filter最终响应
    • 每个 Filter(如 CsrfFilterSecurityContextPersistenceFilter)按顺序执行。

通过以上流程和组件的协作,Spring Security 实现了从请求拦截到权限控制的完整安全机制。在 Spring Boot 3.x 中,需特别注意配置方式的更新(如弃用 WebSecurityConfigurerAdapter),以确保与新版本兼容。

http://www.dtcms.com/wzjs/458729.html

相关文章:

  • 网站制作做站长挣钱vivo应用商店
  • 化妆品网站建设操作可行性分析网站优化方案案例
  • 淘宝做导航网站好郑州seo优化哪家好
  • 网站建设 预付款网络营销的类型
  • 自己做培训需要网站吗英文seo是什么意思
  • 基本网站建设技术柳州网站建设哪里有
  • 佛山新网站建设市场湖南好搜公司seo
  • 银川微信网站看网站时的关键词
  • 关于做情侣的网站的图片大全淘宝推广工具
  • 乐山企业品牌网站建设网站怎么收录到百度
  • 百度网站的域名是什么中国搜索引擎排行榜
  • 简述网站建设方法百度推广怎么操作
  • 个人网站建设方法和过程天津百度爱采购
  • 网站建设招标书范本一个人怎么做独立站shopify
  • xiu主题做的网站seo外包靠谱
  • 大中型网站开发价格谷歌推广怎么开户
  • 绵阳做手机网站seo关键词排名优化案例
  • 手机网站建设电商培训机构推荐
  • 手车做网课网站多少重庆网络seo
  • 我国政府门户网站建设搜索最多的关键词的排名
  • cms网站建设教程网络推广公司专业网络
  • 网站类产品怎么做竞品分析搜索引擎优化排名培训
  • 网络服务商基本网络参数网站优化检测
  • 爱妮微如何做网站链接的网址关键词搜索次数查询
  • 网站开发一般会用到什么语言网站排名优化查询
  • 十个有创意的活动策划seo项目完整流程
  • wordpress 按时间类别seo公司赚钱吗
  • 关键词优化搜索引擎抖音seo怎么做的
  • 我被钓鱼网站骗了骗取建设信用卡建设银行会怎么处理钱会还回吗windows优化大师怎么用
  • 做网站的office平台深圳做网站的公司有哪些