Spring Security 的web基础是Filters,在Spring Security中,认证、授权等功能都是基于过滤器来完成的。
这句话展示了Spring Security的设计思想:即通过一层层的Filters来对web请求做处理
一个web请求会经过一条过滤器链,在经过过滤器链的过程中会完成认证与授权,如果中间发现这条请求未认证或者未授权,会根据被保护API的权限去抛出异常,然后由异常处理器去处理这些异常。
图片.png

spring Filters

image.pngSpring Security提供的功能,都是通过这些过滤器来实现的,这些过滤器按照既定的优先级排列,最终形成一个过滤器链。开发者也可以自定义过滤器,并通过@Order注解去调整自定义过滤器在过滤器链中的位置。
需要注意的是,默认过滤器并不是直接放在Web项目的原生过滤器链中,而是通过一个FilterChainProxy来统一管理。Spring Security中的过滤器链通过FilterChainProxy嵌入到Web项目的原生过滤器链中,

过滤器示例

图片.png

  • formLogin对应着你form表单认证方式,即UsernamePasswordAuthenticationFilter。
  • httpBasic对应着Basic认证方式,即BasicAuthenticationFilter。

image.png

Filter Chain

image.png

内建过滤器

image.png

UsernamePasswordAuthenticationFilter

日志

  1. logging:
  2. level:
  3. org.springframework.security: DEBUG