나의 취미/자바 이야기
스프링 시큐리티 - 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에 대하여 권한설정을 할때 사용하는 매처에 대해서 알아보자
- antMatcher(AntPathRequestMatcher)
- servletPath + pathInfo
- URL에서 queryString은 무시되며, 대소문자 구분은 생성자를 통해서 조정 가능
- /**, **는 어떠한 요청과도 매치
- mvcMatcher(MvcRequestMatcher)
- 스프링MVC의 HandlerMappingIntrospector를 사용하는 매치
- 스프링의 MVC매칭은 servletPath에 대해서 상대적 매칭
여기서 중요한 것은 mvcMatcher는 mvcMatchers("/hello")인 경우 /hello, /hello/와 매핑되지만, antMatchers인 경우, 주어진 표현식에 해당하는 것만 해당한다. 따라서 antMachers("/hello")인 경우 매칭되지만 /hello/는 매칭되지 않는다.