我是新的springboot和试图实现安全的地方没有过滤器应用到我的登录,注册和家庭网址。
我使用的是springboot 2.7.1
我期待antMatchers("/**/signup").permitAll()
保持免费的任何安全过滤器。
在调试时,我发现我的注册URL被命中,用户详细信息被保存,但我的AuthorizationFilter也被执行。
这是我的安全筛选器链:
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
AuthenticationManagerBuilder authenticationManagerBuilder=http.getSharedObject(AuthenticationManagerBuilder.class);
authenticationManagerBuilder.userDetailsService(userLoginService).passwordEncoder(bCryptPasswordEncoder);
AuthenticationManager authenticationManager=authenticationManagerBuilder.build();
http.csrf().disable().authorizeHttpRequests()
.antMatchers("/**/login").permitAll()
.antMatchers("/**/signup").permitAll()
.antMatchers("/home/**").permitAll()
.anyRequest().authenticated().and()
.addFilter(getAuthenticationFilter(authenticationManager))
.addFilter(new AuthorizationFilter(authenticationManager))
.authenticationManager(authenticationManager)
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
return http.build();
}
我不明白为什么会这样。
1条答案
按热度按时间8i9zcol21#
当您使用
permitAll()
时,您并没有停用筛选器,您只是指定您不想对该RequestMatcher
套用任何验证/受权检查。所有的筛选器仍会运作。AuthorizationFilter
将被调用,但由于您为该端点配置了permitAll()
,因此它将始终授予访问权限。