文章目录
第二节:SpringSecurity(二):SpringSecurity入门
第三节:Spring Security(三):Security中重要的几个类
第四节:Spring Security(四):Security的第一次资源访问流程
第五节:Spring Security(五):Security登陆的超简单例子
第六节:Spring Security(六):Security登录的用户名和密码的校验逻辑
研究:我有点好奇,我在访问 http://localhost:8080/hello 资源的时候,security让页面自动跳转到了/login请求,所以我查了下资料,并走了下流程。
文章目录
前言
Spring Security的认证核心为过滤器链,我就从Spring的过滤请求中去寻找答案。
一、Security资源访问流程
其实在了解Security资源访问流程的过程中,我们需要知道FilterSecurityInterceptor和ExceptionTranslationFilter类的作用
1. FilterChainProxy
过滤器链
2. ExceptionTranslationFilter
该filter的作用是捕获AuthenticationException和AccessDeniedException两种异常,其他类型的异常再次抛出
流程:FilterChainProxy-->WebAsyncManagerInterationFilter-->SecurityContextPersistenceFilter-->HeaderWriterFilter-->CsrfFilter-->LogoutFilter-->UsernamePasswordAuthenticationFilter-->DefaultLoginPageGeneratingFilter-->DefaultLogoutPageGeneratingFilter-->BasicAuthenticationFilter-->RequestCacheAwareFilter-->SecurityContextHolderAwareRequestFilter-->...-->ExceptionTransactionFilter-->FilterSecurityInterceptor(执行到此处报异常)-->ExceptionTransactionFilter(捕获到AccessDeniedException异常)
下面时序图:
二、使用步骤
1.了解Security默认的过滤器
默认过滤器此处就不介绍了,大家可以去查看一下。(略)
2.了解FilterChainProxy类
此类是调用所有过滤器的过滤器链(略)
3.了解FilterSecurityInterceptor类
未登陆请求,会在此过滤器中执行校验,抛出异常(略)
总结
本次学习,主要了解第一次执行访问的时候,security的filter链执行流程以及校验的过程。将主要的类和流程列出,方便以后查看,不再对具体类的源码进行说明。