gpt4 book ai didi

spring - 为什么我们需要在 spring security configure(HttpSecurity http) 方法中调用 http.addFilterBefore() 方法?

转载 作者:行者123 更新时间:2023-12-03 14:08:31 24 4
gpt4 key购买 nike

我试图理解为什么我们通常需要在初始 configure(HttpSecurity http) 方法中调用 http.addFilterBefore(jwtAuthenticationFilter(),UsernamePasswordAuthenticationFilter.class) 方法?
据我所知,它会首先添加 jwtAuthenticationFilter() 的结果,然后添加 UsernamePasswordAuthenticationFilter 但我不知道为什么?
jwtAuthenticationFilter() 实现:

@Override
protected void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception {
authenticationManagerBuilder.userDetailsService(customerService).passwordEncoder(bCryptPasswordEncoder());
}


是不是扩展 WebSecurityConfigurerAdapter 的安全类只会在启动时调用一次?

最佳答案

  1. why do we usually need to call

我们正在配置。不叫!
  1. Also is it that the security class that extends WebSecurityConfigurerAdapter will only be called once on startup?

是的,配置方法将在启动时执行(运行时多态性)以设置 HttpSecurity 或配置 spring 安全过滤器。

简单来说, Spring Security 是一个基于过滤器的框架。我们要么启用现有过滤器并对其进行配置,要么添加我们的自定义过滤器。
  • configure()方法用于设置现有过滤器,设置后我们可以修改这些过滤器配置。如果您对配置的修改不能满足您的要求,那么您可以定义自己的自定义文件管理器。
  • 要定义自定义过滤器,有以下三个* 规定
    (实际上是很少使用的 4 addFilterAt())

  •  --------------------------------------------------------------------------------------
    | java-config | xml-config |
    --------------------------------------------------------------------------------------
    | .addFilter() | <custom-filter position="BASIC_AUTH_FILTER"/> |
    --------------------------------------------------------------------------------------
    | .addFilterBefore() | <custom-filter before="LAST" /> |
    --------------------------------------------------------------------------------------
    | .addFilterAfter() | <custom-filter after="FIRST" /> |
    --------------------------------------------------------------------------------------
  • 用简单的话来说。
  • .addFilter() 您可以只添加 spring 定义的过滤器的实例,也可以添加那些 spring 安全定义的过滤器的子类。
    例如.addFilter(customAuthFilter, UsernamePasswordAuthenticationFilter.class) customAuthFilter 应该是 UsernamePasswordAuthenticationFilter 的实例UsernamePasswordAuthenticationFilter 的子类或实例.
  • .addFilterAfter() .addFilterBefore() 这里过滤器可以是任何自定义过滤器。但是,自定义过滤器应该是 GenericFilterBean 的实现.大多数情况下,执行OncePerRequestFilter将会被使用。

  • 您可以引用 sequence of execution in spring security进行详分割析。

    关于spring - 为什么我们需要在 spring security configure(HttpSecurity http) 方法中调用 http.addFilterBefore() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995870/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com