众所周知Spring security是Spring家族一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它的核心功能主要有 认证 Authentication(比如用户登入、系统授权访问 )、授权Authorization(当前用户有哪些资源可以访问 )、攻击防护(防止伪造身份)。其核心就是一组过滤器链,项目启动后将会自动配置。
本篇文章将对security中过滤器链中关于用户名密码认证的 UsernamePasswordAuthenticationFilter过滤器进行源码追踪与分析。
首先在idea里连点两下shift找到UsernamePasswordAuthenticationFilter
因为security核心是一组过滤器链,即过滤器拦截到响应url的请求后会先执行doFilter()方法中chain.doFilter()之前的代码,然后执行下一个过滤器或者servelt。紧接着执行chain.doFilter()之后的代码。所以必须找到doFilter()方法
但是在UsernamePasswordAuthenticationFilter并没有找到doFilter方法,但是发现继承了
AbstractAuthenticationProcessingFilter这个类,那么根据多态就说明调用的其实就是父类