문:
permitAll()
을 하면 SecurityFilterChain을 안타고 그냥 슥 넘어갈 것이라 생각했다. JwtAuthFilter
에서 자꾸 막힘)permitAll()
을 했을 때 어떻게 동작하는지를 몰랐던 것 / 이로 인해 JwtAuthFilter
를 설계할 때부터 잘못된 tokenNullCheck
함수를 넣게 되었다는 점permitAll()
로부터 시작된 환장의 시큐리티 입문기 시:
해:
알
if(token == null) throw new TokenNotExistException();
@Configuration
@RequiredArgsConstructor
@EnableWebSecurity // 스프링 Security 지원을 가능하게 함
@EnableGlobalMethodSecurity(securedEnabled = true) // @Secured 어노테이션 활성화
public class WebSecurityConfig {
private final JwtUtil jwtUtil;
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
// h2-console 사용 및 resources 접근 허용 설정
return (web) -> web.ignoring()
.requestMatchers(PathRequest.toH2Console())
.requestMatchers(PathRequest.toStaticResources().atCommonLocations());
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.csrf().disable();
// 기본 설정인 Session 방식은 사용하지 않고 JWT 방식을 사용하기 위한 설정
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.authorizeRequests()
.antMatchers("/api/user/**").permitAll()
.anyRequest().authenticated()
// 기본 설정인 Session 방식은 사용하지 않고 JWT 방식을 사용하기 위한 설정
.and().addFilterBefore(new JwtAuthFilter(jwtUtil), UsernamePasswordAuthenticationFilter.class);
// http.formLogin().loginPage("/api/user/signIn").permitAll();
// http.exceptionHandling().accessDeniedPage("/api/user/forbidden");
return http.build();
}
}
access(permitAll)
을 주는건가...?if(token == null) throw new TokenNotExistException();
스프링 괜찮은 Ref
permitAll()의 타입에 대한 공식문서