이번 수업에서는
@PostFilter 주석을 활용해 보겠습니다
첫째로
이 PreFilter 주석을 작성합니다
이후에 동일한 내용을 복사하는데
이번에는 PreFilter가 아닌
대신 PostFilter를 사용합니다
이번에는 작동이 될 것입니다
종류와 관계 없이 데이터를 수신합니다
수신할 수 있는 입력 데이터에 대한
요구 사항이 없습니다
하지만 Test라는 이름의
contact 객체가 있다면
이는 UI로 다시 돌아오지 않습니다
Test라는 이름이 아닌 contact
객체만 수신할 수 있습니다
따라서 이러한 객체는
UI 애플리케이션으로 다시 보내게 됩니다
이는 기본적으로 갖고 있는 요구 사항이기에
이 요청에 의해서
누군가 Test라는 이름으로 데이터를
UI 애플리케이션으로 제출하면
UI 페이지에 뜨는 서비서 요청 숫자를
받지 못합니다
왜냐하면 애초에 백엔드 애플리케이션에서
해당 정보를 받지 못했기 때문입니다
이제 여기에 중단점을 두겠습니다
이제 프론트엔드로 가겠습니다
첫째로 Hello World라고 작성하여
데이터를 입력해줍니다
이메일은 world@gmail.com
내용은 Hello Subject
메시지도 Hello Message로 입력하겠습니다
이는 성공적으로 처리되어
UI 애플리케이션으로
서비스 요청 번호를 받을 것입니다
Send Message를 클릭하면
백엔드 메소드의 실행을 멈출 것입니다
이걸 디버깅 하겠습니다
첫째로 입력 데이터에
제한이 없습니다
그렇기 때문에 size가 1이 된 것입니다
그 다음에
디버깅을 시도하면
결론적으로 데이터베이스로 갑니다
애플리케이션 안에 해당 중단점을 해제하면
메시지가 제출되었고
이게 레퍼런스 ID라는 메시지가 뜹니다
이쯤 되었으니 이제 이름을 Test로 두고 같은 과정을 반복 하겠습니다
새로고침을 합니다
현재로서는 메시지가 없음을 볼 수 있습니다
Test로 데이터를 제출하겠습니다
이메일은 test@therateexample.com
내용도 Test subject
그리고 메시지 역시 Test message로 입력합니다
이는 백엔드 애플리케이션으로 전송하고 싶은 내용입니다
이제 Send Message를 클릭하겠습니다
이는 백엔드에서의 실행을 멈춥니다
이번에는 contact 객체가 Test라는 이름을 가졌음에도
필터링되지 않음을 볼 수 있습니다
왜냐면 PreFilter 기준을 적용하고 있지 않기 때문입니다
현재는 PostFilter 기준만 적용되어 있기 때문입니다
이는 모든 비즈니스 로직은 실행되나
작성된 contact 속에서
UI 애플리케이션으로 돌아갈 때
해당 객체는 Test라는 이름을 갖고 있기 때문에
필터링 된다는 뜻입니다
따라서 해당 중단점을 해제하겠습니다
이제 UI 애플리케이션으로 돌아가 확인해보면
백엔드에서 어떠한 유저가 서비스 요청 숫자와
관련된 메시지를 수신한 적이 없다는 것을
볼 수 있습니다
하지만 데이터베이스를 확인해 보면
같은 객체가 데이터베이스에 저장 되었음을 확인할 수 있습니다
따라서 PostFilter 주석을
직접적으로 사용할 때는 메소드 입력이나
비즈니스 로직을 제어하는 것이 아닙니다
오로지 언급해 놓은
조건을 기반으로 작성된 출력이 필터링 됩니다
PreFilter와 PostFilter 주석에 대해
명확히 이해 하셨길 바랍니다
이러한 상황에서
해당 주석을 활용하여
메소드 레벨 보안
혹은 메소드 레벨 필터링을 활용해 보시기 바랍니다
이것으로 해당 섹션을 마치겠습니다
이전에 빠르게 GitHub 리포지터리를 확인해 보겠습니다
GitHub리포지터리 안에서 스크롤을 내려보면
section_10이라는 폴더가 있습니다
이걸 열어보면
안에 UI 애플리케이션 코드와 함께
백엔드 Maven 프로젝트를 발견할 수 있습니다
이렇게 프론트엔드와 백엔드에 변경 사항을 적용 했기 때문에
두 파일 모두 업로드 했습니다
해당 섹션에서 질문이 생기면
GitHub 리포지터리에 있는 코드를 참고해 주세요
하지만 반드시 메소드 레벨 보안에 대한
이러한 이론을 명확히 이해하고 있는지 확인하시기 바랍니다
메소드 레벨 보안에 대해 논의해 볼 수 있어
너무 행복했습니다
명확히 이해 하셨길 바랍니다
질문이 생긴다면, Q&A 섹션에 제출해 주십시오
제가 도와드리겠습니다
그럼 다음 강의 때 뵙겠습니다
수고하셨습니다