[Spring Boot, Security] Spring Security 특정 HTTPMethod만 허용하는 방법

김우진·2022년 8월 16일
0
post-thumbnail

Spring Security 특정 HTTPMethod(GET,POST,PUT,DELETE)만 허용하는 방법

프로젝트를 진행하다 가능하면 완벽한 RESTful 한 API는 아니라도 HTTP API 정도는 따라하고 싶어 API 작명을 "GET, POST, PUT, DELETE /content" 같은 방법으로 작성하였다.

그랬더니, url로 filter를 거는 security에 걸려 로그인 하지않으면 접근할 수 없는 상태가 되었다. 이에 GET요청은 로그인하지 않고 접근 할 수 있는 방법을 찾다 아래와 같은 방법을 알 게 되었다.

antMatchers에 특정 HttpMethod를 넣어주는 방법

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
               				    ···
        .and()
        .authorizeRequests()
        .antMatchers("/signin", "/signup", "/").permitAll()
        .antMatchers("/images/**, /js/**").permitAll()
        .antMatchers(HttpMethod.GET, "/board/**").permitAll() <- 여기
        .anyRequest().hasRole("USER")
        .and()
            					···
}

위처럼 SecurityConfig 설정 파일에 .antMatchers로 허용할 HttpMethod와 경로를 지정 해두고 .permitAll()로 설정해주면 위 로그인의 허용한 Method의 요청은 Security가 허용해준다.

썸네일 출처

unsplash페이지의 Brett Jordan님

0개의 댓글