본문 바로가기
study

[JSCODE] 회원가입, 로그인 기능 추가

by 당코 2023. 5. 20.

회원가입

 

요구사항

  • 회원가입 시 이메일, 패스워드를 받아서, DB에 이메일, 패스워드, 회원 가입 시간을 저장해야 한다.
  • 유저에 대한 정보가 저장될 때, id(PK, primary key)도 같이 Auto-increment 형식으로 저장돼야 한다.
  • 이메일에 반드시 @가 1개만 포함되어 있어야 한다.
  • 이메일에 공백이 포함될 수 없다.
  • 중복된 이메일이 존재할 수 없다.
  • 패스워드에 공백이 포함될 수 없다.
  • 패스워드는 8 자 이상 15자 이하여야 한다.

 

유저의 이메일로 유저를 식별하기로 하였기 때문에 이메일에 unique 제약조건을 설정해 주었다.

그리고 이메일 검증 어노테이션인 @Email을 사용하려고 했는데 생각보다 검증하는데 부족한 점이 많았다.

그래서 이메일의 검증 조건을 정규표현식으로 따로 정의해 주었다.

@Pattern(regexp = "^[A-Za-z0-9_\\.\\-]+@[A-Za-z0-9\\-]+\\.[A-Za-z0-9\\-]+$", message = "잘못된 이메일 형식입니다.")
private String email;

 

비밀번호에도 공백이 포함될 수 없다는 것을 검증하기 위해서 정규표현식을 추가해 주었다.

@Pattern(regexp = "^[^\\s]+$", message = "잘못된 비밀번호 형식입니다.")
@Length(min = 8, max = 15, message = "비밀번호 자리는 8이상 15이하로 입력해주세요")
private String password;

 

만약 잘못된 입력으로 예외가 발생하게 된다면 기존에 만들어놓았던 FieldExceptionResponse로 응답을 하게 하였다.

 

어려웠던 점, 개선할 점

회원가입 기능을 구현하는 것은 할 수 있었지만 로그인 기능은 jwt를 이용해서 구현해야 해서 완료하지 못하였다. jwt를 처음 접하는 상황이기에 차근차근 하나씩 배워가도록 하겠다. 로그인 시 어떻게 유저의 로그인 정보를 token으로 주고받는지 개념에 대해서는 어느 정도 이해가 되었지만 실제 코드로 구현하는 것은 익숙지 않아 시간이 좀 걸릴듯하다. 다음 스터디까지 어느 정도 구현 방식에 대해 숙지하고 실제로 구현하도록 노력해 봐야겠다.