- Spring Security解决的问题是安全访问控制。安全访问控制就是对所有进入系统的请求进行拦截,校验每个请求是否合法,是否访问到它所需要的资源。之前我们可以用Filter和AOP等实现功能。
- 而Spring Security对web资源的保护也是靠Filter过滤器实现的
- 当Spring Security初始化会创建SpringSecurityFilterChain的Servlet过滤器,实现了servlet的Filter
因此外部的请求会经过此类
- 采用Filter链,校验用户身份和校验用户权限。校验身份会委托给AutothenticationManager,校验权限会委托给AccessDecisionManager
过滤器链中重要的Filter
- SecurityContextPersistenceFilter 是整个拦截过程的出入口(是第一个也是最后一个拦截器)
- UsernamePasswordAuthenticationFilter 用于处理来自表单提交的认证。表单必须提供对用的用户名和密码
- FilterSecurityInterceptor 是用于保护Web资源的,使用AccessDecisionManager对当前用户进行授权访问
- ExceptionTranslationFilter 捕获来自FilterChain所有的异常