在web应用中,spring security是一个filter。而在filter内部,它又自建了一个filter chain(如果不用命名空间,也可以自定义)。spring security按顺序对每个filter进行处理。各filter之间有较大的差异性。与权限验证关系最密切的是FilterSecurityInterceptor。

 

FilterSecurityInterceptor认证及验权流程:

 
FilterSecurityInterceptor的简单介绍
 

FilterSecurityInterceptor的类关系图如下。它使用AuthenticationManager做认证(用户是否已登录),使用AccessDecisionManager做验证(用户是否有权限)。
FilterSecurityInterceptor的简单介绍


 
ProviderManager是默认的AuthenticationManager实现类,它不直接进行认证。而是采用组合模式,将认证工作委托给AuthenticationProvider。一般情况下,一组AuthenticationProvider有一个认证成功,就被视为认证成功。ProviderManager关系图如下:


FilterSecurityInterceptor的简单介绍
 


 AccessDecisionManager负责验证用户是否有操作权限,它也是采用组合模式。security自带的AccessDecisionManager实现类有三种:AffirmativeBased只要有一个认证处理器认证通过就表示成功;ConsensusBased采用的是多数原则;UnanimousBased采用一票否决制。


FilterSecurityInterceptor的简单介绍
 
 

相关文章:

  • 2022-01-08
  • 2021-06-02
  • 2021-10-16
  • 2021-07-09
  • 2021-06-04
  • 2021-10-28
  • 2021-08-05
猜你喜欢
  • 2022-12-23
  • 2021-07-09
  • 2021-07-14
  • 2021-12-03
  • 2021-12-02
  • 2021-11-20
相关资源
相似解决方案