Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4 week mission #20

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open

4 week mission #20

wants to merge 8 commits into from

Conversation

somang-lim
Copy link
Collaborator

No description provided.

@somang-lim somang-lim self-assigned this Nov 7, 2022
Copy link

@ahah525 ahah525 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

소망님 4주간 수고하셨습니다!!
앞으로 이 서비스를 발전시켜 소망님만의 포트폴리오로 만들면 더 좋을 것 같네요⭐️

@RequestMapping("/api/v1")
@RequiredArgsConstructor
@Slf4j
public class ApiController {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ApiController 를 member, myBooks 로 분리하는게 어떨까요??

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

동의합니다!

if (member == null) {
return Ut.spring.responseEntityOf(RsData.of("F-1", "일치하는 회원이 존재하지 않습니다."));
}

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

username, password 검증은 어디에서 이루어지나요???

return Ut.spring.responseEntityOf(RsData.failOf(null));
}

return Ut.spring.responseEntityOf(RsData.successOf(memberContext.getMember()));
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REST API 로 설계할 때는 엔티티(member)객체를 넘겨주는 것보다 Response 용 DTO 를 만들어 요구사항에서 주어진 값들만 응답바디에 포함시키는게 좋을 것 같습니다!!

Comment on lines +70 to +77
if (member == null) {
return Ut.spring.responseEntityOf(
RsData.of(
"F-1",
"조회 권한이 없습니다."
)
);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

여기서 member == null 일때를 검사하는 로직이 꼭 필요할까요???
저는 수업에서처럼 해당 로직을 따로 넣진 않았습니다! JwtAuthorizationFilter 에서 accessToken 검증에 성공하고 강제 로그인처리될 때, 만약에 member 가 null 이었다면 이미 필터에서 오류가 나서 컨트롤러 단에서는 member 가 null 일 경우는 띠로 고려하지 않아도 된다고 생각했습니다. jwt나 필터에 대해서 확실하게 알지 못해서 저도 이부분이 궁금하네요! 혹시 잘 아시는 분 있으신가요???

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 이 부분 궁금합니다! 저는 혹시 몰라서 member null체크를 해주긴 했는데 승연님 말씀처럼 세션이든 토큰이든 만료가 되면 1차적으로 필터에서(필터에 세션 정보를 업데이트하는 로직도 포함시켰다는 전제 하에) 걸러주기 때문에 컨트롤러에서 member null 체크는 필요 없는지 궁금해요!!

Comment on lines +41 to +47
@JsonIgnore
private int authLevel;

@JsonIgnore
private long restCash; // 예치금

@JsonIgnore
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 JsonIgnore 을 붙여 JSON 응답에 포함하지 않도록 하셨군요!
하지만 아까 말씀드렸던 것처럼 DTO로 반환하는게 조금 더 안전하고 좋은 방법 같습니다!

Comment on lines +17 to +20
public SecretKey jwtSecretKey() {
String keyBase64Encoded = Base64.getEncoder().encodeToString(secretKeyPlain.getBytes());
return Keys.hmacShaKeyFor(keyBase64Encoded.getBytes());
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저는 secretKeyPlain 으로부터 jwtSecretKey(비밀키) 하나를 만들어 사용한다고 이해했는데 이게 맞나요???
정확하게 어떻게 만들어지는지까진 이해하지 못했습니다..

Copy link

@minnseong minnseong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4주차까지 너무 수고많으셨습니다!!

log.debug("member: " + member.getId());

if (member == null) {
return Ut.spring.responseEntityOf(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다음과 같이 예외가 발생했을 때? 비즈니스 로직상 문제가 생겼을 때 소망님과 같이 바로 실패 응답 메시지를 컨트롤러에서 처리하신거 예외를 빠짐없이 잘 처리하신 것 같습니다.
하지만 RestControllerAdvice를 통해 모든 예외를 공통적으로 처리할 수 있습니다. 이렇게 되면 예외만 발생시켜도 해당 예외에 대해서 응답 메시지를 만들고 처리하는 로직이 컨트롤러와 분리되어 컨트롤러를 깔끔하게 만들 수 있고, 예외가 다양하더라도 공통적으로 처리할 수 있어 간편할 것 같습니다. @RestControllerAdvice에 대해서 찾아보시면 좋을 것 같습니다.

@@ -74,6 +76,10 @@ public Member adminJoin(JoinForm joinForm) {
return member;
}

public String genAccessToken(Member member) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

jwt 관련 코드를 한 곳에 모으면 좋을 것 같다?라는 생각이 들었습니다!!
사실 개인적인 생각이지만, jwt관련 해서 코드의 수정이 필요하다면 memberService 내의 코드를 변경해야하는 일이 발생하기 때문에 memberService의 책임이 많다는 생각이 들었습니다.!


@Getter
@JsonIgnoreProperties({"id", "createDate", "modifyDate", "username", "email", "nickname"})

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분을 추가하신 이유가 궁금합니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants