列出spring security的所有SecurityFilterChain
为什么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相关推荐
- 【深入浅出Spring原理及实战】「技术原理」Spring Security的核心功能和加载运行流程的原理分析
SpringSecurity的架构总览 Spring Security的简介说明 Spring Security对认证.授权和常见漏洞保护提供了全方位支持.使用的版本为:Spring Security ...
- 【Spring Security】WebSecurityConfigurerAdapter被deprecated怎么办?官方推荐新的Security配置风格总结
h 本期目录 背景 一. 前言 二. 配置HttpSecurity 三. 配置WebSecurity 四. 配置LDAP认证 五. 配置JDBC认证 六. In-Memory Authenticati ...
- Spring Security 参考手册(一)
Spring Security 参考手册 Ben AlexLuke TaylorRob WinchGunnar Hillert Spring security 是一个强大的和高度可定制的身份验证和访问 ...
- Spring Security中文文档
Spring Security中文文档 来源:https://www.springcloud.cc/spring-security.html#overall-architecture 作者 Ben A ...
- Spring Security OAuth2 带有用于代码交换的证明密钥 (PKCE) 的授权码流
Spring Security OAuth2 带有用于代码交换的证明密钥 (PKCE) 的授权码流 概述 OAuth2依据是否能持有客户端密钥,将客户端分为两种类型:公共客户端和保密客户端. 保密客户 ...
- Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】
源码请移步至: https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc ...
- 深入浅出Spring Security(三):FilterChainProxy的运行过程
上篇回顾 我们已经知道了Spring Security的核心过滤器的创建和原理,本文主要介绍核心过滤器FilterChainProxy是如何在tomcat的ServletContext中生效的. Se ...
- Spring Security原理之springSecurityFilterChain
在上篇文章中,已经大概交代了一下三个地方 spring security启动WebSecurityConfiguration主要做了两件事情: 1.根据WebSecurityConfigurerAda ...
- 透过源码详解Spring Security 初始化流程
Spring Security在3.2版本之后支持Java Configuration,即:通过Java编码形式配置Spring Security,可不再依赖XML文件配置,本文采用Java Conf ...
最新文章
- c++引用的自我见解
- 石川es6课程---18、ES6 复习
- 【Python】Pandas宝藏函数-concat()
- 从技术面试官的角度来谈谈简历和面试
- 只读事务上下文_我可以/应该在事务上下文中使用并行流吗?
- boost库中mutex、condition_variable与mutex::scoped_lock联合使用实现线程之间的通信
- mysql一共有多少引擎_MySQL存储引擎你们知道多少?
- 面试题6:从尾巴开始打印链表
- MySQL 8.0.22 源码编译安装全过程
- 如何通过Facebook幻灯片广告让销售量疯涨
- python3抓取图片脚本_使用Python3编写抓取网页和只抓网页图片的脚本
- 《数学女孩》 读书笔记 Part 1 of 5
- pythonindex函数的使用格式_Python正课31 —— 函数参数的使用
- 图片标注工具LabelImg安装与使用
- traceroute/tracert原理
- C++学习(一八一)android的NDK、SDK版本的对应关系
- Java基础学习之函数式编程Comsumer接口(JDK8)
- Debezium报错处理系列九:“ddl“ : “# Dummy event replacing event type 160 that slave cannot handle.“
- Android 微软雅黑、仿宋、黑体的使用
- Windows编程(2)
热门文章
- bzoj1724[Usaco2006 Nov]Fence Repair 切割木板*
- DataX实现oracle到oracle之间的数据传递
- 【转载】一个通过JSONP跨域调用WCF REST服务的例子(以jQuery为例)
- 关于MYSQL的 insert 的一些方法说明
- golang延时_Golang 定时器底层实现深度剖析
- 多少并发量算高并发_Linux服务端最大并发数是多少?
- Android 软键盘盖住输入框的问题
- Google+ 关闭引大V不满:700万粉丝“说没就没”
- 《Python Enhancement Proposal #8》要点 学习摘录
- 4月23日云栖精选夜读:阿里AI新物种!设计机器人两年赶上资深员工水平