ercnam
3k
2020-02-26 11:26:31
2
78

스프링 authInterceptor 에서 유효값을 체크할수 있을까요


스프링부트로 문자발송을 담당하는 REST API 를 약소하게나마 만들어 봤습니다.

이 API를 서버에 배포하고, 같은 서버에 요청을 쏴줄 사이트를 같이 배포해서

문자 API에다 localhost:포트번호 로 요청을 보내고 받고 하는건 성공했습니다.


이대로도 쓸순 있는데, 하나 더해서 일종의 인증값을 체크하고 싶습니다.

비록 로컬에서 도는 API 지만.. 뭐.. 그냥요...


요청 사이트에서 사전에 약속된 문자열을 JSON에 담아 전송하면

API쪽 컨트롤러에 도달하기 전에 인터셉터에서 가로채서 약속된 값이 있으면 진행시키고

없다면 에러 메시지를 리턴시키고 싶은데요.

preHandler 에서 어떻게 해야 사이트쪽의 전송값을 받아볼수 있을까요..?

전송값이 request로 올테니까 getParameter 로 찍어봤는데 이걸로는 체크를 못하더군요

(POST 전송입니다)


컨트롤러의 각 메소드마다 전송값을 체크해서 걸러내는 식으로 구현하면 일일이 박아줘야 하니 하드코딩이 될테고... 흠... 방법이 없을까요?

0
0
  • 답변 2

  • teang
    13
    2020-02-26 12:50:08 작성 2020-02-26 13:06:33 수정됨

     api 요청시 request body에 해당 값들이 담길것 같아요, 그래서 getParam 으로 확인이 안되는 것으로 생각됩니다.

    payload 관련하여 찾아보심 좋은것 같습니다.

    https://okky.kr/article/291237 이런 글도 있네요.


    아마 인터셉터에서는 request 관련 함수 이용하여 payload 확인 가능하실겁니다(getReader, getInputStream 메소드 등 이용). 


    추가적으로 payload 값 변경이 필요할 경우에는 아래 url참고하시면 좋을것 같습니다.

    https://meetup.toast.com/posts/44


    +추가, 참고로 request body를 인터셉터나 필터에서 한 번 읽어들이면그 이후 컨트롤러에서는 해당 페이로드를 읽을 수 없습니다. 이러한 경우 해결 방법으로 위의 포스팅 또는 서치해보시길 바랍니다.


    답변이 두서없고 정확한 내용인지 모르겠네요, 혹시라도 잘못된 내용있다면 다른 오키 고수분들 및 글쓴이님의 피드백 부탁 드립니다. - 지나가던 신입


    감사합니다.

    0
  • ercnam
    3k
    2020-02-26 13:15:24

    아뇨 굉장히 도움이 되었습니다. 답변 감사드려요

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.