어린왕자이야기

스프링 시큐리티 - matcher 본문

나의 취미/자바 이야기

스프링 시큐리티 - matcher

grandguy 2022. 5. 10. 23:23
@Configuration 
public class ProjectConfig extends WebSecurityConfigurerAdapter {
  @Override 
  protected void configure(HttpSecurity http) throws Exception { 
    http.httpBasic();
    http.authorizeRequests() 
      .mvcMatchers("/product/{code:^[0-9]*$}")
      .permitAll()
      .anyRequest().denyAll();
  }  
}

스프링 시큐리티에서 URL에 대하여 권한설정을 할때 사용하는 매처에 대해서 알아보자

  1. antMatcher(AntPathRequestMatcher)
    • servletPath + pathInfo
    • URL에서 queryString은 무시되며, 대소문자 구분은 생성자를 통해서 조정 가능
    • /**, **는 어떠한 요청과도 매치
  2. mvcMatcher(MvcRequestMatcher)
    • 스프링MVC의 HandlerMappingIntrospector를 사용하는 매치
    • 스프링의 MVC매칭은 servletPath에 대해서 상대적 매칭
    •  

 

여기서 중요한 것은 mvcMatcher는 mvcMatchers("/hello")인 경우 /hello, /hello/와 매핑되지만, antMatchers인 경우, 주어진 표현식에 해당하는 것만 해당한다. 따라서 antMachers("/hello")인 경우 매칭되지만 /hello/는 매칭되지 않는다.