특정 HTTP method만 처리되게할때 오류 발생

JIWOO YUN·2023년 8월 22일
0

SpringSecurity

목록 보기
2/2
post-custom-banner
스프링 시큐리티에서 더 정교하게 특정 Method가 같이 올경우만 처리되게 할려고 한다.

근데 버전이 바뀌었는지 밑과 같이 진행하면 지금은 또 안된다.

 .requestMatchers(HttpMethod.POST, "/api/*/member/login").permitAll() // 로그인은 누구나 가능
.requestMatchers(HttpMethod.GET, "/api/*/articles").permitAll() // 글 보기는 누구나 가능
.requestMatchers(HttpMethod.GET, "/api/*/articles/*").permitAll() // 글 보기는 누구나 가능
.anyRequest().authenticated() // 나머지는 인증된 

전에는 이렇게 해도 됬었는데 지금은 또 안된다.

내부 라이브러리로 들어가니 AntPathRequestMatcher 에다가 httpMethod를 String으로 추가하는 방식으로 추가되어있었다.

	public AntPathRequestMatcher(String pattern, String httpMethod) {
		this(pattern, httpMethod, true);
	}
.requestMatchers(new AntPathRequestMatcher("/api/*/member/login","POST")).permitAll()

이와 같이 변경을 하고 Swagger에서 테스트를 해보니 제대로 작동하였다.

  • 토큰이 제대로 발급된 모습
  • 혹시나 몰라서 GET으로 변경하고 진행

인증이 실패한 모습

  • 시큐리티에서 인가 요청을 특정 HTTP Method만 허용되게 하는 법은 몰랐었는데 알게 된건 좋은 거 같다.
profile
열심히하자
post-custom-banner

0개의 댓글