Skip to content

[FEAT] 9주차 미션_링크 - #41

Open
Cheesebee wants to merge 1 commit into
linkfrom
week9-link
Open

[FEAT] 9주차 미션_링크#41
Cheesebee wants to merge 1 commit into
linkfrom
week9-link

Conversation

@Cheesebee

Copy link
Copy Markdown
Contributor

📂 관련 이슈

  • closes #[이슈 번호]

🛠️ 작업 사항

JWT 기반 인증 구현

  • JWT 관련 의존성 추가
  • JwtUtil을 통해 Access Token 생성 및 검증 로직 구현
  • JwtAuthFilter를 통해 Authorization Header의 Bearer Token 검증
  • 유효한 JWT 요청 시 SecurityContext에 인증 객체 저장

로그인 API 구현

  • POST /auth/login API 추가
  • 이메일, 비밀번호 기반 로그인 처리
  • BCrypt PasswordEncoder로 비밀번호 검증
  • 로그인 성공 시 JWT Access Token 응답

회원가입 API 보완

  • 회원가입 시 비밀번호 BCrypt 암호화 저장
  • 이메일 중복 검증 처리
  • 회원가입 API는 Public API로 유지

마이페이지 API 개선

  • 기존 userId 기반 조회 대신 @AuthenticationPrincipal 기반 조회로 변경
  • GET /api/users/me API 추가
  • JWT 인증된 사용자 정보로 마이페이지 응답 반환

Security 설정 변경

  • JWT 인증 방식에 맞게 SecurityFilterChain 수정
  • Form Login 비활성화
  • Session Stateless 설정
  • 회원가입, 로그인, Swagger 경로는 Public API로 허용
  • 그 외 API는 인증 필요하도록 설정

📸 관련 이미지 (스크린샷 또는 동영상)

화면 캡처 2026-05-26 154410 화면 캡처 2026-05-26 154543 화면 캡처 2026-05-26 154820

💬 기타 설명

💡 추가적으로 공유할 내용이나 리뷰어에게 전달할 사항이 있다면 작성해 주세요.

@Cheesebee Cheesebee self-assigned this May 26, 2026
@YONGJAEEE
YONGJAEEE requested review from gyeonseo and wnsgh7368 May 26, 2026 10:49

@wnsgh7368 wnsgh7368 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

전체적으로 다 비슷해서 이번주도 리뷰 남길게 많이 없는 듯! 이번주도 고생 많았어!

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

/home 이랑 /mypage API가 둘 다 컨트롤러에서 memberService의 getmyPage()를 호출하고 있어! 응답도 마찬가지로 둘 다 HomeResponseDTO에 담고 있는데 둘이 섞였나?? 확인 한번 해봐야할 것 같아!

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@Email 어노테이션으로 검증해주는거 좋네! 하지만 @Email 어노테이션은 허점이 많아서 검증이 제대로 안될 수 있다고 하네! 첨부한 링크 가볍게 읽어보는거 추천해~(링크가 아래 링크 읽는거 추천)
https://velog.io/@mj3242/Spring%EC%97%90%EC%84%9C-%EC%9D%B4%EB%A9%94%EC%9D%BC%EC%9D%84-%EA%B2%80%EC%A6%9D%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

@gyeonseo gyeonseo left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

링크 JWT 기반 회원가입 로그인 다 무난하게 잘 구현해줬네~~ 링크도 항상 미션 잘해와주고 9주차까지 미션 안밀리고 잘해줘서 고맙다 ㅎㅎ 데모데이도 일정 조율 잘 될거야!! 너무 걱정하지말고 좋은 팀 만나서 여름동안 재밌게 개발해보면 좋겠다 9주차 미션 수고많았어 데모데이도 화이팅이야!!

public class UserLoginResponseDTO {

// JWT Access Token입니다.
private String accessToken;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

로그인 응답으로 요렇게 액세스토큰 자체만 내려주는구나! 나는 만료시간까지 같이 내려주는걸 추천하긴 해! 만료시간이 왜 필요한지도 링크가 한번 찾아보면 좋겠다..!


MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "MEMBER404", "사용자를 찾을 수 없습니다."),
MEMBER_PASSWORD_NOT_MATCH(HttpStatus.UNAUTHORIZED, "MEMBER401", "비밀번호가 일치하지 않습니다."),
MEMBER_EMAIL_ALREADY_EXISTS(HttpStatus.CONFLICT, "MEMBER409", "이미 가입된 이메일입니다.");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

이렇게 분기하면 로그인 API에서 이메일 가입 여부를 추측할 수 있게되니까, 로그인 실패는 하나로 합치는게 더 좋아보인다!!

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.

3 participants