为什么80%的码农都做不了架构师?>>>   

本文讲述一下如何在运行时列出所有的SecurityFilterChain。

java

 FilterChainProxy chain = (FilterChainProxy) ApplicationContextHolder.getContext().getBean("springSecurityFilterChain");List<SecurityFilterChain> filterChains = chain.getFilterChains();System.out.println(filterChains);

ApplicationContextHolder

主要是如何直接使用autowired注入,在启动的时候报错,因此在完全启动之后,从context里头取

@Component
public class ApplicationContextHolder implements ApplicationContextAware {private static ApplicationContext ctx;public static ApplicationContext getContext() {return ctx;}@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {ctx = applicationContext;}
}

springSecurityFilterChain

spring-security-config-4.1.4.RELEASE-sources.jar!/org/springframework/security/config/http/HttpSecurityBeanDefinitionParser.java

static void registerFilterChainProxyIfNecessary(ParserContext pc, Object source) {if (pc.getRegistry().containsBeanDefinition(BeanIds.FILTER_CHAIN_PROXY)) {return;}// Not already registered, so register the list of filter chains and the// FilterChainProxyBeanDefinition listFactoryBean = new RootBeanDefinition(ListFactoryBean.class);listFactoryBean.getPropertyValues().add("sourceList", new ManagedList());pc.registerBeanComponent(new BeanComponentDefinition(listFactoryBean,BeanIds.FILTER_CHAINS));BeanDefinitionBuilder fcpBldr = BeanDefinitionBuilder.rootBeanDefinition(FilterChainProxy.class);fcpBldr.getRawBeanDefinition().setSource(source);fcpBldr.addConstructorArgReference(BeanIds.FILTER_CHAINS);fcpBldr.addPropertyValue("filterChainValidator", new RootBeanDefinition(DefaultFilterChainValidator.class));BeanDefinition fcpBean = fcpBldr.getBeanDefinition();pc.registerBeanComponent(new BeanComponentDefinition(fcpBean,BeanIds.FILTER_CHAIN_PROXY));pc.getRegistry().registerAlias(BeanIds.FILTER_CHAIN_PROXY,BeanIds.SPRING_SECURITY_FILTER_CHAIN);}

最后一行,注册了别名SPRING_SECURITY_FILTER_CHAIN

doc

  • 初识 Spring Security

转载于:https://my.oschina.net/go4it/blog/1507512

列出spring security的所有SecurityFilterChain相关推荐

  1. 【深入浅出Spring原理及实战】「技术原理」Spring Security的核心功能和加载运行流程的原理分析

    SpringSecurity的架构总览 Spring Security的简介说明 Spring Security对认证.授权和常见漏洞保护提供了全方位支持.使用的版本为:Spring Security ...

  2. 【Spring Security】WebSecurityConfigurerAdapter被deprecated怎么办?官方推荐新的Security配置风格总结

    h 本期目录 背景 一. 前言 二. 配置HttpSecurity 三. 配置WebSecurity 四. 配置LDAP认证 五. 配置JDBC认证 六. In-Memory Authenticati ...

  3. Spring Security 参考手册(一)

    Spring Security 参考手册 Ben AlexLuke TaylorRob WinchGunnar Hillert Spring security 是一个强大的和高度可定制的身份验证和访问 ...

  4. Spring Security中文文档

    Spring Security中文文档 来源:https://www.springcloud.cc/spring-security.html#overall-architecture 作者 Ben A ...

  5. Spring Security OAuth2 带有用于代码交换的证明密钥 (PKCE) 的授权码流

    Spring Security OAuth2 带有用于代码交换的证明密钥 (PKCE) 的授权码流 概述 OAuth2依据是否能持有客户端密钥,将客户端分为两种类型:公共客户端和保密客户端. 保密客户 ...

  6. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至: https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc ...

  7. 深入浅出Spring Security(三):FilterChainProxy的运行过程

    上篇回顾 我们已经知道了Spring Security的核心过滤器的创建和原理,本文主要介绍核心过滤器FilterChainProxy是如何在tomcat的ServletContext中生效的. Se ...

  8. Spring Security原理之springSecurityFilterChain

    在上篇文章中,已经大概交代了一下三个地方 spring security启动WebSecurityConfiguration主要做了两件事情: 1.根据WebSecurityConfigurerAda ...

  9. 透过源码详解Spring Security 初始化流程

    Spring Security在3.2版本之后支持Java Configuration,即:通过Java编码形式配置Spring Security,可不再依赖XML文件配置,本文采用Java Conf ...

最新文章

  1. c++引用的自我见解
  2. 石川es6课程---18、ES6 复习
  3. 【Python】Pandas宝藏函数-concat()
  4. 从技术面试官的角度来谈谈简历和面试
  5. 只读事务上下文_我可以/应该在事务上下文中使用并行流吗?
  6. boost库中mutex、condition_variable与mutex::scoped_lock联合使用实现线程之间的通信
  7. mysql一共有多少引擎_MySQL存储引擎你们知道多少?
  8. 面试题6:从尾巴开始打印链表
  9. MySQL 8.0.22 源码编译安装全过程
  10. 如何通过Facebook幻灯片广告让销售量疯涨
  11. python3抓取图片脚本_使用Python3编写抓取网页和只抓网页图片的脚本
  12. 《数学女孩》 读书笔记 Part 1 of 5
  13. pythonindex函数的使用格式_Python正课31 —— 函数参数的使用
  14. 图片标注工具LabelImg安装与使用
  15. traceroute/tracert原理
  16. C++学习(一八一)android的NDK、SDK版本的对应关系
  17. Java基础学习之函数式编程Comsumer接口(JDK8)
  18. Debezium报错处理系列九:“ddl“ : “# Dummy event replacing event type 160 that slave cannot handle.“
  19. Android 微软雅黑、仿宋、黑体的使用
  20. Windows编程(2)

热门文章

  1. bzoj1724[Usaco2006 Nov]Fence Repair 切割木板*
  2. DataX实现oracle到oracle之间的数据传递
  3. 【转载】一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
  4. 关于MYSQL的 insert 的一些方法说明
  5. golang延时_Golang 定时器底层实现深度剖析
  6. 多少并发量算高并发_Linux服务端最大并发数是多少?
  7. Android 软键盘盖住输入框的问题
  8. Google+ 关闭引大V不满:700万粉丝“说没就没”
  9. 《Python Enhancement Proposal #8》要点 学习摘录
  10. 4月23日云栖精选夜读:阿里AI新物种!设计机器人两年赶上资深员工水平