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

[톰캣 구현하기 - 1,2단계] 베베(최원용) 미션 제출합니다. #322

Merged
merged 41 commits into from
Sep 7, 2023

Conversation

wonyongChoi05
Copy link
Member

안녕하세요 민트~ 이번에 톰캣을 구현하면서 WAS의 내부 동작 원리를 약간은 알게된 미션이었네요 ㅎㅎ; 아직까지 추상화랑 코드 정리가 덜 된 부분들이 있어서 보기가 불편하실 수도 있겠어요 ㅠㅠ 바쁘시겠지만 코드리뷰 잘 부탁드립니다!

Copy link
Member

@yujamint yujamint left a comment

Choose a reason for hiding this comment

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

안녕하세요, 베베.
우선 리뷰 요청 빠르게 주셨는데, 이렇게 늦게 리뷰하게 되어 죄송합니다. 다음 리뷰부터는 재빠르게 하도록 하겠습니다.

커밋을 작은 단위로 잘 해주신 리뷰하기 정말 편했습니다👍
순서대로 모든 커밋을 보았는데 메서드 분리, 역할에 맞는 클래스 분리 및 위임을 정말 잘하신 것 같습니다. 코드가 깔끔해서 보고 배웠습니다.
전체적인 구조나 흐름은 제 마음에 들기 때문에 구조에 대한 리뷰는 딱히 없습니다.
리뷰 확인하신 뒤에 의견 나누고 싶은 부분은 코멘트 남겨주시면 감사하겠습니다. DM 주셔도 너무 좋습니다.

tomcat/src/main/java/nextstep/jwp/model/User.java Outdated Show resolved Hide resolved
if (session != null) {
return new ResponseEntity(FOUND, INDEX_PAGE);
}
return new ResponseEntity(OK, LOGIN_PAGE);
Copy link
Member

Choose a reason for hiding this comment

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

로그인된 상태에서 /login 페이지에 HTTP GET method로 접근하면 이미 로그인한 상태니 index.html 페이지로 리다이렉트 처리한다.

2단계의 4번에 위와 같은 요구사항이 있습니다.
현재는 로그인한 상태에서 로그인 페이지로 이동했을 때 인덱스 페이지로 리다이렉트되지 않는 것 같아요. 확인 부탁드립니다!

Copy link
Member Author

Choose a reason for hiding this comment

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

엇.. 저도 몰랐는데 안되는군요..ㅋㅋㅋㅋㅋ 역시 개발 어렵습니다 ㅠ

@sonarcloud
Copy link

sonarcloud bot commented Sep 7, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 12 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

warning The version of Java (11.0.20.1) you have used to run this analysis is deprecated and we will stop accepting it soon. Please update to at least Java 17.
Read more here

Copy link
Member

@yujamint yujamint left a comment

Choose a reason for hiding this comment

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

베베 역시나 빠르게 리뷰 반영해 주셨군요~ 고생하셨습니다!
어차피 3단계가 리팩토링이니, 이번 PR은 이만 머지하도록 하겠습니다.
다만 이야기를 듣고 싶은 부분이 있어서 코멘트 남겼습니다. 확인 부탁드려요.

Comment on lines +34 to +35
if (session == null) {
return ResponseEntity.getCookieNullResponseEntity(protocol, OK, Location.from(LOGIN_PAGE));
Copy link
Member

Choose a reason for hiding this comment

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

이전 커밋을 보니 세션에 저장된 user 정보를 확인하는 로직을 작성하셨던 것 같네요. 어쩌다 다시 삭제된 건지 알 수 있을까요???

}

private ResponseEntity getSuccessLoginResponse(final User user, final Protocol protocol) {
ResponseEntity response = ResponseEntity.getCookieNullResponseEntity(protocol, FOUND,
Copy link
Member

Choose a reason for hiding this comment

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

세션을 생성하고는 있지만, 쿠키를 null로 생성하고 있어서 JSESSIONID가 쿠키에 담겨 있지는 않은 구조인 것 같아요.
브라우저에서 로그인을 성공해도 쿠키가 생성되지 않더라고요.

private final Cookie cookie;
private final Location location;

public ResponseEntity(Protocol protocol, HttpStatus httpStatus, Cookie cookie, Location location) {
Copy link
Member

Choose a reason for hiding this comment

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

호출되는 곳이 팩토리 메서드뿐이라 접근제어자 수정하면 좋을 거 같습니다~


private final SessionRepository sessionRepository = new SessionRepository();

public ResponseEntity login(RequestLine requestLine, RequestHeader requestHeader, RequestBody requestBody) {
Copy link
Member

Choose a reason for hiding this comment

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

GET 요청을 처리할 때와 POST 요청을 처리할 때의 로직을 각각 메서드로 분리하면 더 깔끔할 거 같네요. 이외에 현재 지원하지 않는 HTTP 메서드에 대해서는 예외 처리하기도 깔끔할 것 같고요~

@yujamint yujamint merged commit 6054c80 into woowacourse:wonyongchoi05 Sep 7, 2023
2 checks passed
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.

2 participants