Open xinrong2019 opened 5 years ago
切入点是基于filter
涉及的知识点:filter的生命周期、责任链模式
2019年6月10日
时隔近20天了,中间看了网络、算法、Zookeeper,还有其他各种刷抖音、打游戏、打篮球、看电影。
涨工资,越来越难了,因为意识到自己执行力变得差了,非常的慌
之前分析了Spring Security的入口是从entry-point配置开始的,核心应该是通过Filter拦截每次请求,然后将请求分发到Spring Security的逻辑上来。下面看看具体是怎么做的?
它有几种实现:LoginUrlAuthenticationEntryPoint、BasicAuthenticationEntryPoint、DigestAuthenticationEntryPoint、HttpBasicConfigurer.HttpStatusEntryPoint、Http403ForbiddenEntryPoint、DelegatingAuthenticationEntryPoint
登录入口用的是LoginUrlAuthenticationEntryPoint实现。
AuthenticationEntryPoint接口是什么时候执行的呢?
是在org.springframework.security.web.access.ExceptionTranslationFilter中执行的
这个类实现了javax.servlet.Filter接口
Filter接口是Java Web过滤器规范,有三个方法:
public void init(FilterConfig filterConfig) throws ServletException;
public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException;
public void destroy();
看源码先看总体运行逻辑,特别是接口和抽象类中定义了规范和主线流程,还有这些接口和抽象类的Javadoc一般也会将接口干什么的、涉及到的相关类写的很具体。
其实和1一样,不要一开始钻进细节太深,总结起来,应该是先理论(接口和Javadoc),再实践(具体实现和usage),再回到理论去理解理解
因为基础的阻塞,需要花时间看,基础的知识点使用频率是高频重复,理解后看其他的都容易理解,收益其实挺高的。
上周对Sping Security做了一些分析,知道了如何配置资源不走权限认证、认证入口干了哪些事、ProviderManager中的执行逻辑、用户请求的用户密码和数据库中保存的用户密码是如何匹配的逻辑。
还有一些问题没有分析完成,比如后续的几个标签没有分析完:access-denied-handler、intercept-url、logout、anonymous、request-cache,比如完整执行流程是什么,之前说的很分散,逐个去分析的。下面一个个来。