본문 바로가기

개발일지/TIL

[230723] [클론] Lifegram 작업 (2)

기능 구현

💬 로그인과 회원가입 구현을 맡았다. Stateless를 적용하기 위해 Java Spring Security과 JWT를 사용해 구현을 했다. 회원가입의 경우 요청 값들이 정규식에 부합하며, 이메일과 유저이름이 중복되지 않으면 성공하도록 구현했다. 로그인의 경우 요청 값들이 정규식에 부합하며, 이메일과 패스워드가 DB에 들어 있는 값과 동일하면 성공하도록 구현했다. 로그인 성공 시 JWT 토큰을 반환하도록 만들었다.

 

✔ 회원 가입 정규식 적용

 

💬 회원가입은 프런트와 논의 후 이메일, 유저이름, 패스워드에 정규식을 적용하기로 했다.

1. 이메일은 숫자, 영어 대소문자, 특수기호 몇 가지, @, . 이 포함되는 정규식 적용
    ➡ @Pattern(regexp = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$")
2. 유저이름은 숫자, 영어 대소문자, 5글자 이상 12글자 이하 정규식 적용
    ➡ @Pattern(regexp = "^[a-zA-z0-9_]{5,12}$")
3. 패스워드 숫자, 영어 대소문자, 8글자 이상 16글자 이하 정규식 적용
    ➡ @Pattern(regexp = "^[a-zA-Z0-9]{8,16}$")

 

✔ 회원 가입 Default Profile Image

 

💬 우리 서비스 프런트 회원가입 화면에는 Profile image를 받는 부분이 없었다. 회원가입 이후에 프로필 수정에서 변경할 수 있도록 회원가입 시 기본 이미지를 넣어줄 것을 요청했다. 

✅ Image URL에 기본 이미지 파일 이름을 넣어줌
User user = User.builder()
    .email(signupRequestDto.email())
    .userName(signupRequestDto.userName())
    .password(passwordEncoder.encode(signupRequestDto.password()))
    .img_url("default.jpeg")
    .build();

 

✔ 로그인 정규식 적용

 

💬 회원가입은 프런트와 논의 후 이메일, 패스워드에 정규식을 적용하기로 했다.

1. 이메일은 숫자, 영어 대소문자, 특수기호 몇 가지, @, . 이 포함되는 정규식 적용
    ➡ @Pattern(regexp = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$")
2. 패스워드 숫자, 영어 대소문자, 8글자 이상 16글자 이하 정규식 적용
    ➡ @Pattern(regexp = "^[a-zA-Z0-9]{8,16}$")

 

✔ 로그인 토큰 반환

 

💬 프런트에서 만료 시간을 디코딩 작업을 추가적으로 하지 않게 하기 위해 로그인 성공 시 토큰과 만료 시간을 보내주기로 했다.

✅ 토큰과 만료 시간을 넣을 수 있는 Dto 생성
public record TokenResponseDto (
    String accessToken,
    LocalDateTime expiredAt
) {}​