회원가입
요구사항
- 회원가입 시 이메일, 패스워드를 받아서, 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으로 주고받는지 개념에 대해서는 어느 정도 이해가 되었지만 실제 코드로 구현하는 것은 익숙지 않아 시간이 좀 걸릴듯하다. 다음 스터디까지 어느 정도 구현 방식에 대해 숙지하고 실제로 구현하도록 노력해 봐야겠다.
'study' 카테고리의 다른 글
[JSCODE] 내 정보 조회 기능 (0) | 2023.05.27 |
---|---|
[JSCODE] JWT를 이용한 로그인 구현 (2) | 2023.05.24 |
[JSCODE] Elastic Beanstalk을 통한 배포 (0) | 2023.05.17 |
[JSCODE] 유효성 검사, 예외처리 및 API 문서 작성 (0) | 2023.05.14 |
[JSCODE] 익명 게시판 서비스 개발 시작 (0) | 2023.05.11 |