minwoolee7328 / post

0 stars 0 forks source link

프로젝트 피드백 - 작성자: 김태선 #1

Open thesun4sky opened 1 year ago

thesun4sky commented 1 year ago

Overview

코드 레벨에 대한 피드백은 아래에 남기도록 하겠습니다.

thesun4sky commented 1 year ago

UserController.java

https://github.com/minwoolee7328/post/blob/b9d3d1b889cf8582b24c260b408071481ece1e10/src/main/java/com/example/post/user/controller/UserController.java#L24-L32 위 코드를 보면 메서드명이 대문자로 시작하는 경우가 있는데요. 메서드는 소문자로 시작해야하고, 클래스명만 대문자로 시작해야 합니다.

https://github.com/minwoolee7328/post/blob/b9d3d1b889cf8582b24c260b408071481ece1e10/src/main/java/com/example/post/user/controller/UserController.java#L30-L32 위 코드와 같이 response 객체를 service 로 전달해서 처리하고 있는데요. request, response 정보는 Controller 에서 처리하도록 해야하고 service 로 보낼때는 DTO로 담아서 보내거나 해당 로직 자체를 Controller 로 옮겨야 합니다.

thesun4sky commented 1 year ago

UserService.java

https://github.com/minwoolee7328/post/blob/b9d3d1b889cf8582b24c260b408071481ece1e10/src/main/java/com/example/post/user/service/UserService.java#L41-L48 위와 같이 Validation 을 체크하려고 하신것 같은데 실제 signupRequestDto 에 검증 어노테이션이 주석처리 되어있는것 같습니다. 해당 DTO가 요청본문이라면 @requestbody 어노테이션을 추가해주시고 요청하면 @Valid 어노테이션에 따라 검증이 자동으로 수행될 것 입니다. 만약 안된다면 Controller 에 @validated 어노테이션도 한번 추가해보세요.

https://github.com/minwoolee7328/post/blob/b9d3d1b889cf8582b24c260b408071481ece1e10/src/main/java/com/example/post/user/service/UserService.java#L56-L60 위 코드에서 Response 를 작성하는 코드는 Controller 에서 처리해야 합니다. Service 메서드에서는 요청/응답에 대한 처리가아닌 서비스로직만 담고있고 예외 발생시 Exception을 던지도록 구현하는게 좋습니다.

https://github.com/minwoolee7328/post/blob/b9d3d1b889cf8582b24c260b408071481ece1e10/src/main/java/com/example/post/user/service/UserService.java#L64-L68 유저 권한에 대해서 AdminToken 으로 구분하고 계시는데요. 이부분은 아래 코드에서 DB에서 조회해서 claim에 넣어주고 이걸 Authentication에 넣어주고 있는데 여기서 권한을 꺼내서 쓰도록 수정해야 합니다.

thesun4sky commented 1 year ago

AuthFilter

https://github.com/minwoolee7328/post/blob/b9d3d1b889cf8582b24c260b408071481ece1e10/src/main/java/com/example/post/jwt/AuthFilter.java#L58 위 코드에서 유저정보 조회한것을 속성으로 담아서 아래 코드에서 가져와서 유저정보를 전달해주고 있는데요. https://github.com/minwoolee7328/post/blob/b9d3d1b889cf8582b24c260b408071481ece1e10/src/main/java/com/example/post/service/PostService.java#L33 이 방법으로 구현하지말고 SpringSecurity를 사용한다면 Authentication 의 principal 을 사용해서 전달해야합니다. 구현 예시는 아래 링크를 참조해주세요. https://github.com/thesun4sky/spring-blog/blob/ed6f1236bf9cdae6060b69db3762945225fa7325/src/main/java/com/thesun4sky/springblog/service/PostService.java#L59-L65