저번 시간에 Valid 어노테이션을 이용해서, json 입력에 대해서 검증하는 처리를 했어요. 예를 들자면, regLevel이 1 이상이여야 하고, itemName은 공백이면 안되는 조건을 걸면, itemName 필드가 공백인 것이 들어오면 400을 떨궈주게 됩니다. 이 글을 보시면 대략적으로 감이 오실 거 같아요. 그런데 제 토이 프로젝트에서, validation 처리야 했다고 쳐도, 예외에 대해서 ResponseEntity를 controller에서 만들어 버렸어요. 최근에 리팩토링 한 부분이 이것을 ControllerAdvice로 뺀 것이였는데요. 그러면서 몇 개의 api에 대해서 에러 포맷도 custom 하게 처리하게 되었습니다. 이 부분은 프로젝트 변경 내역에서 확인하실 수 있습니다. 이전에 했던..
웹/스프링부트 검색 결과
꽤 최근에 토이 프로젝트의 controller 코드가 조금 단순화 되었음을 볼 수 있습니다. 아직 리팩토링이 다 끝났다고 말 하기도 그렇지만. 사실 어제 리뷰를 받고 valid 어노테이션을 적용한 것이 조금 컸습니다. 변경 내역은 이 링크에서 보실 수 있습니다. 사실 문제의 발단은 사소한 테스트에서 출발하였습니다. 유저가 중복된 경우에 대해서 왜 내 프로젝트는 500을 떨어트릴까? 예외 처리가 느슨해 보였습니다. 그런데 마침 카톡방에서 리뷰어 분들이 제 프로젝트를 보시고, Bad request 부분을 처리하는 로직이 비대해 보인다면서, Valid 어노테이션을 써 보는 게 어떻겠냐는 조언을 주셨습니다. 먼저 dependencies에 Validation을 추가합니다. pom.xml에는 spring-boot-..
토이 프로젝트에서 post /book api가 있었습니다. 책 하나를 추가하는 것이였습니다. 그런데, 책을 여러 개 한꺼번에 추가하는 요청도 들어올 수 있을 겁니다. 그런 api를 하나 추가해 보겠습니다. 혹시나, mybatis의 mapper, mapper interface 등에 익숙하시지 않으시다면, mybatis generator로 자동으로 매퍼 interface와 매퍼 xml 파일을 만들어 주는 방법을 익히셔서 셋팅해 두시는 것도 괜찮습니다. 이에 대한 글은 여기에 있어요. bookService 단에서 addBook이라는 메소드를 추가하겠습니다. 이것은 Book들에 대한 정보들을 받아 오면, 이들을 db에 넣는 역할을 하게 됩니다. 그러면, bookMapper에 List를 받는 insertListO..
안녕하세요. 이번 시간에는 스프링 시큐리티에서 자주 보게 될 antPathMatcher에 대해 간단하게 알아봅시다. 이 글에서 반영된 내역들은 모두 다 제 깃 레포에 올라가 있습니다. 프로젝트 구조는 위와 같습니다. 여기서 바꿔야 할 부분을 천천히 보도록 하겠습니다. 먼저, 인증 방식을 프로퍼티에서 설정하지 않겠습니다. 대신에, securityConfig 클래스에서 configureGlobal 메서드로 설정하도록 하겠습니다. 그러니, application.properties의 내용을 아래와 같이 바꾸겠습니다. 인증 정보를 모두 삭제한 모습입니다. 다음에 컨트롤러에 GET /user를 받는 것을 하나 추가하겠습니다. 이 링크로는 모든 유저가 접근할 수 있도록 하겠습니다. 이것은 초기화 함수인 configu..
이번 시간에는 preAuthorized에 대해서 간단하게 알아봅시다. 도서관 토이 프로젝트 중에서, 인증 처리를 구현해야 하는 부분이 있었습니다. 그리고, 특정 권한을 가져야 api를 수행하게끔 하는 기능도 있었습니다. 스프링 시큐리티는 익숙하지 않아서, 테스트용 프로젝트를 하나 더 만든 다음에, 기능을 나누어서 구현하게 되었습니다. 해당 부분에 대해서는 이 레포에서 천천히 다뤄보도록 하겠습니다. 테스트용 프로젝트의 flow입니다. 인증 처리를 구현하고, 인가 처리를 하고, 그에 따라서 api에 접근할 수 있게 할 계획입니다. 한꺼번에 하기에는 양이 너무 많으니, 이번 시간에는 인가 부분만 해 보도록 하겠습니다. 인증하고 인가에 대한 것은 이 글에서 언급을 했어요. 이 글에서 언급할 것은 preAutho..
최근댓글