天天看点

[3天速成Spring Security] - 02 Spring过滤器Filter及过滤器链Filter ChainSpring FiltersFilter Chain

本文主要用于快速介绍Spring Filters及Filter Chain的相关概念,因为Filter是Spring Security用于实现认证和授权的底层实现方式

Spring Filters

Filter介绍

  • 任何Spring Web应用本质上只是一个servlet
  • Security Filter在HTTP请求到达你的Controller之前过滤每一个传入的HTTP请求

Security Filter实现流程

[3天速成Spring Security] - 02 Spring过滤器Filter及过滤器链Filter ChainSpring FiltersFilter Chain
  • 未认证是401
  • 未授权是403

过滤器示例代码

[3天速成Spring Security] - 02 Spring过滤器Filter及过滤器链Filter ChainSpring FiltersFilter Chain
  • 注意:上述是通过一个过滤器实现了 提取用户名密码 / 验证用户名密码 / 校验授权 等内容,而Spring Security实际是使用多个过滤器形成过滤器链进行处理

Filter Chain

Spring Security 是通过多个Filter形成过滤器链进行的认证和授权

[3天速成Spring Security] - 02 Spring过滤器Filter及过滤器链Filter ChainSpring FiltersFilter Chain

Spring Security中常见的内建过滤器

  • BasicAuthenticationFilter - 在请求中找一个Basic Auth HTTP头,如果找到,则尝试用该头中的用户名和密码验证用户
  • UsernamePasswordAuthenticationFilter - 如果在请求参数或者POST的Request Body中找到用户名/密码,则尝试用这些值对用户进行身份验证
  • DefaultLoginPageGeneratingFilter - 默认登录页面生成过滤器。用于生成一个登录页面,如果你没有明确地禁用这个功能,那么就会生成一个登录页面。这就是为什么在启用Spring Security时,会得到一个默认登录页面的原因
  • DefaultLogoutPageGeneratingFilter - 如果没有禁用该功能,则会生成一个注销页面
  • FilterSecurityInterceptor - 过滤安全拦截器。用于授权逻辑