[내일배움캠프] Spring 일정관리 앱 Develop Step3-4.

김재진·2026년 1월 8일

내일배움캠프

목록 보기
34/70

1. 일정관리 앱 Develop Lv.3-4 회원가입과 로그인(인증)

  • 유저에 비밀번호 필드 추가
  • 설명
    • Cookie/Session을 활용해 로그인 기능을 구현
  • 조건
    • 이메일비밀번호를 활용해 로그인 기능을 구현

2. github 주소

3. 코드

  • 유저 Entity
public class User extends BaseEntity {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String username;
    @Column(unique = true) // 이메일을 고유하게 설정(중복 불가)
    private String email;
    private String password;
    ...
  • Controller
	// 회원가입
    @PostMapping("/signup")
    public ResponseEntity<UserSignupResponse> signupUser(
           @Valid @RequestBody UserSignupRequest request
    ){
        return ResponseEntity.status(HttpStatus.CREATED).body(userService.save(request));
    }

    // 로그인
    @PostMapping("/login")
    public ResponseEntity<Void> login(
            @Valid @RequestBody UserLoginRequest request, HttpSession session
    ){SessionUser sessionUser = userService.login(request);
        session.setAttribute("loginUser", sessionUser);
        return ResponseEntity.status(HttpStatus.OK).build();
    }
  • Service
 @Transactional(readOnly = true)
    public SessionUser login(@Valid UserLoginRequest request) {
    	// 이메일을 통해 유저 정보가 저장되어 있는지 확인
        User user = userRepository.findByEmail(request.getEmail()).orElseThrow(
                () -> new IllegalStateException("없는 멤버입니다.")
        );
        // 비밀번호가 틀릴 경우 예외처리
        if (!user.getPassword().equals(request.getPassword())) {
            throw new IllegalStateException("비밀번호가 틀립니다.");
        }
        return new SessionUser(
                user.getId(),
                user.getUsername(),
                user.getEmail()
        );
    }

4. 트러블 슈팅

// 수정전
 if (user.getPassword().equals(request.getPassword())) {
     throw new IllegalStateException("비밀번호가 틀립니다.");
 }
// 수정후
if (!user.getPassword().equals(request.getPassword())) {
     throw new IllegalStateException("비밀번호가 틀립니다.");
 }
  • 처음 비밀번호 확인 중 맞지 않는 경우가 아닌 맞는 경우로 예외처리를 해서 처음에 비밀번호가 맞는 상황에서 틀리다고 나와 코드를 수정했다.
profile
개발공부 처음해보는 사람

0개의 댓글