千家信息网

Spring Security中WebSecurity和HttpSecurity的关系是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章给大家分享的是有关Spring Security中WebSecurity和HttpSecurity的关系是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前几天有
千家信息网最后更新 2026年11月01日Spring Security中WebSecurity和HttpSecurity的关系是什么

这篇文章给大家分享的是有关Spring Security中WebSecurity和HttpSecurity的关系是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

前几天有粉丝私信我:WebSecurity和HttpSecurity啥关系?当时给我问住了,我大概只知道它们之间的关系类似TypeScript和JavaScript的关系,但是具体的细节确实不太清楚。因此就在周末简单研究了一下。

HttpSecurity的本质

前几天在Spring Security 5.4的新玩法中介绍了一种新的配置HttpSecurity的方式:

@Bean SecurityFilterChain filterChain(HttpSecurity http) throws Exception {     return http             .antMatcher("/**")             .authorizeRequests(authorize -> authorize                     .anyRequest().authenticated()             )             .build(); }

其实就能够知道HttpSecurity是用来构建包含了一系列过滤器链的过滤器SecurityFilterChain,平常我们的配置就是围绕构建SecurityFilterChain进行。还得拿出这张老图:

安全过滤链

从上面这个图中可以看出构建好的还要交给FilterChainProxy来代理,是不是有点多此一举?

WebSecurity的本质

在有些情况下这种确实多此一举, 不过更多时候我们可能需要配置多个SecurityFilterChain来实现对多种访问控制策略。

多个SecurityFilterChain

为了精细化的管理多个SecurityFilterChain的生命周期,搞一个统一管理这些SecurityFilterChain的代理就十分必要了,这就是WebSecurity的意义。下面是WebSecurity的build方法的底层逻辑:

@Override protected Filter performBuild() throws Exception {    Assert.state(!this.securityFilterChainBuilders.isEmpty(),          () -> "At least one SecurityBuilder needs to be specified. "                + "Typically this is done by exposing a SecurityFilterChain bean "                + "or by adding a @Configuration that extends WebSecurityConfigurerAdapter. "                + "More advanced users can invoke " + WebSecurity.class.getSimpleName()                + ".addSecurityFilterChainBuilder directly");     // 被忽略请求的个数 和 httpscurity的个数 构成了过滤器链集合的大小    int chainSize = this.ignoredRequests.size() + this.securityFilterChainBuilders.size();    List securityFilterChains = new ArrayList<>(chainSize);     // 初始化过滤器链集合中的 忽略请求过滤器链         for (RequestMatcher ignoredRequest : this.ignoredRequests) {       securityFilterChains.add(new DefaultSecurityFilterChain(ignoredRequest));    }     // 初始化过滤器链集合中的 httpsecurity定义的过滤器链    for (SecurityBuilder securityFilterChainBuilder : this.securityFilterChainBuilders) {       securityFilterChains.add(securityFilterChainBuilder.build());    }    FilterChainProxy filterChainProxy = new FilterChainProxy(securityFilterChains);    if (this.httpFirewall != null) {        // 请求防火墙       filterChainProxy.setFirewall(this.httpFirewall);    }    if (this.requestRejectedHandler != null) {        // 请求拒绝处理器       filterChainProxy.setRequestRejectedHandler(this.requestRejectedHandler);    }    filterChainProxy.afterPropertiesSet();     Filter result = filterChainProxy;    if (this.debugEnabled) {       this.logger.warn("\n\n" + "********************************************************************\n"             + "**********        Security debugging is enabled.       *************\n"             + "**********    This may include sensitive information.  *************\n"             + "**********      Do not use in a production system!     *************\n"             + "********************************************************************\n\n");       result = new DebugFilter(filterChainProxy);    }    this.postBuildAction.run();    return result; }

从上面中的源码可以看出,WebSecurity用来构建一个名为springSecurityFilterChain的Spring BeanFilterChainProxy 。它的作用是来定义那些请求忽略安全控制,那些请求必须安全控制,在合适的时候清除SecurityContext以避免内存泄漏,同时也可以用来定义请求防火墙和请求拒绝处理器,另外我们开启Spring Seuciry Debug模式也是这里配置的。

同时还有一个作用可能是其它文章没有提及的,FilterChainProxy是Spring Security对Spring framework应用的唯一出口,然后通过它与一个Servlet在Spring的桥接代理DelegatingFilterProxy结合构成Spring对Servlet体系的唯一出口。这样就将Spring Security、Spring framework、Servlet API三者隔离了起来。

感谢各位的阅读!关于"Spring Security中WebSecurity和HttpSecurity的关系是什么"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

过滤器 配置 安全 多个 更多 代理 控制 多此一举 个数 作用 内容 同时 处理器 就是 文章 时候 本质 篇文章 防火墙 出口 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网巨头反垄断金融科技 高科技与互联网 互联网科技视频 深圳艾佳互联网科技 四个字互联网科技公司取名 衡水科技产业互联网平台 承德科技产业互联网发展 注册互联网科技公司经营范围大全 互联网科技大奖都有哪些公司 卓翼科技产业互联网合作 互联网金融科技名词解释 区块链结合互联网科技 山东有哪些互联网科技公司 互联网科技实习生岗位 雨阳互联网卡科技有限公司 张召忠谈中国互联网科技 工业互联网科技成果转化 济南小医互联网科技有限公司招聘 陕西彩京云互联网科技有限公司 互联网科技创业计划的风险分析 互联网科技公司经营范围 互联网科技公司怎么样 蓝色互联网科技 佳云科技和互联网广告 坤平互联网科技 互联网保险科技创业 佛山市拉法互联网科技有限公司 为客找房互联网科技公司怎么样 张召忠谈中国互联网科技 互联网科技自媒体灵感
0