SpringSecurity大家可能都知道这是一组Filter的组合但是具体是怎样的呢?让我们首先看一下我们最原始的登录是怎么做的,框架也都是一步步的演变过程,让我们一起循序渐进的学习。
先看下总体的体现FilterChainProxy(其实是一个Servlet过滤器)其实包含了多个SecurityFilterChain
SecurityFilterChain又包含了多个Filter的实现,最常见的就是 UsernamePasswordAuthenticationFilter
以上是官方网站的一个例子。
username password共同组成了
UsernamePasswordAuthenticationToken这个类是接口Authentication的一个实现类。其实就是用户的输入参数。这时候是只包含用户名和密码的
拿到这个请求参数之后的authentication方法会把这个UsernamePasswordAuthenticationToken填充完成,最主要是detail属性,其实就是个性化的用户实体。中间会校验用户密码的正确性。这个是框架自动帮你完成的,在provider实现类中。
认证完成之后有个成功处理方法在usernamepassword的父类AbstractAuthenticationProcessingFilter中,可以自定义