Spring Security 拦截器
2020-06-30 18:45:29 17 举报
Spring Security 拦截器
作者其他创作
大纲/内容
Filter
+ init(FilterConfig)+ doFilter(ServletRequest;ServletResponse;FilterChain)+ destroy()
该类中存放了一个SecurityFilterChain集合,根据request检查访问路径选择一个SecurityFilterChain,并从选好的链中拿到所有的filter进行执行。
SecurityFilterChain是最终要选择执行的filter链,我们可以根据不同的需求配置自定义的filter链。
servlet执行filter的时候,直接操作DelegatingFilterProxy。
由于Spring Security是依赖spring管理,所有其他的过滤器都是bean,但是基本的servlet无法操作bean,所以使用该类作为转换器,连接整个Spring Security的其他组件的入口。
FilterChainProxy在这里主要是根据请求url来选择下一步执行哪个filter链进处理
该类的doFilter方法主要是从WebApplicationContext获取filter类型的bean,将所有事务交给它处理(没有错,上面拿到的filter就是FilterChainProxy类型的bean)。这里还要注意执行下一个filter方法这里没有调用。
2
不过SecurityFilterChain的默认实现已经十分强大,里面包含大量的的过滤器
1
DelegatingFilterProxy
- webApplicationContext:WebApplicationContext- delegate:Filter
+ doFilter(ServletRequest;ServletResponse;FilterChain)
DefaultSecurityFilterChain
- requestMatcher:RequestMatcher = defaultValue- filters:List<Filter>
+ operation1(params):returnType- operation2(params)- operation3()
Spring Security 蓝图
Spring Security就是一个超级过滤器
FilterChainProxy
- filterChains:List<SecurityFilterChain>- filterChainValidator:FilterChainProxy.FilterChainValidator
+ doFilter(ServletRequest;ServletResponse;FilterChain)- doFilterInternal(ServletRequest;ServletResponse;FilterChain)- getFilters(HttpServletRequest):List<Filter>
3
SecurityFilterChain
+ matches(HttpServletRequest):boolean+ getFilters():List<Filter>
0 条评论
回复 删除
下一页