Skip to content

8주차 미션 [워니]#18

Open
ywkim1m wants to merge 15 commits into
mainfrom
wony/week8
Open

8주차 미션 [워니]#18
ywkim1m wants to merge 15 commits into
mainfrom
wony/week8

Conversation

@ywkim1m
Copy link
Copy Markdown
Collaborator

@ywkim1m ywkim1m commented May 20, 2026

📌 구현 결과

  • Spring Security 적용
  • BCrypt 기반 비밀번호 암호화 적용
  • Public / Private API 분리
    • /api/members/signup → Public
    • 그 외 API → 인증 필요
  • CustomEntryPoint, CustomAccessDeniedHandler를 통한 예외 응답 통일
  • UserDetails, UserDetailsService 구현
  • 회원가입 DTO validation 추가

워크북

  • 로그인 없이 401 예외 응답
image

미션

  • Member에 email, password 추가

  • 회원가입 시 password를 BCryptPasswordEncoder로 암호화

  • /auth/** 또는 회원가입 API만 permitAll()

  • 나머지 .authenticated() + exceptionHandling 적용

    • 회원가입 로그인 없이 201
    image
    • 마이페이지 로그인 없이 401
    image

❓ 리뷰 요청

🤔 질문

💬 기타 공유 사항

  • enum 값 누락으로 Hibernate DDL 생성이 실패하는 문제 해결
  • AuthController 분리 예정

@ywkim1m ywkim1m changed the title 8주차 미션[워니] 8주차 미션 [워니] May 20, 2026
@yujining3827
Copy link
Copy Markdown
Collaborator

8주차도 수고하셨습니다 !!

Copy link
Copy Markdown
Member

@yangjiae12 yangjiae12 left a comment

Choose a reason for hiding this comment

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

회원가입 시에 약관 동의와 선호 음식 선택이 요구사항에 포함되어 있었는데, 누락된 것 같아 보입니다! 이 부분 반영하시면 좋을 것 같아요~

private final PasswordEncoder passwordEncoder;

@Transactional
public MemberSignupResponse signup(MemberSignupRequest request) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

회원가입 전에 동일 이메일로 이미 가입된 회원이 있는지 확인하는 로직이 있으면 좋을 것 같습니다!

Comment on lines +25 to +29
Member member = Member.builder()
.email(request.getEmail())
.password(passwordEncoder.encode(request.getPassword()))
.nickname(request.getNickname())
.build();
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

MemberSignupRequest에는 이름, 성별, 생년월일, 주소가 필수값으로 정의되어 있는데, 실제 Member 생성 시에는 email, password, nickname만 저장되고 있는 것 같습니다. 회원가입 요청에서 받은 필수 정보들이 실제 엔티티에도 반영되도록 추가하면 좋을 것 같습니다.

Comment on lines +25 to +38
Member member = Member.builder()
.email(request.getEmail())
.password(passwordEncoder.encode(request.getPassword()))
.nickname(request.getNickname())
.build();

memberRepository.save(member);

return MemberSignupResponse.builder()
.memberId(member.getId())
.email(member.getEmail())
.nickname(member.getNickname())
.build();
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Member 엔티티 생성과 응답 DTO 생성 로직은 Converter로 분리하면 좋을 것 같습니다. Service에는 회원가입 흐름과 검증 로직만 남겨두면 역할이 더 명확해질 것 같습니다!

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