본문 바로가기

개발 일지/TIL

[ #35 ] TIL

✏️ 0604      


뉴스피드 프로젝트 발제

팀 프로젝트 회의

역할 분배 & 코드 작성


뉴스피드 프로젝트

흑흑 발표는 너무 무서워효

 

비밀번호 유효성 검사 ( Validation 사용)

 

 

@Pattern(
    regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{10,}$",
    message = "비밀번호는 대소문자 포함 영문, 숫자, 특수문자를 최소 1글자씩 포함해야 합니다."
)
private String password;  // 비밀번호

 

정규식 해석

  • ^ : 문자열의 시작
  • (?=.*[a-z]) : 최소 하나의 소문자 알파벳을 포함
  • (?=.*[A-Z]) : 최소 하나의 대문자 알파벳을 포함
  • (?=.*\\d) : 최소 하나의 숫자를 포함 ( \\d는 숫자를 의미)
  • (?=.*[@$!%*?&]) : 최소 하나의 특수 문자를 포함 (특수 문자는 @$!%*?& 중 하나)
  • [A-Za-z\\d@$!%*?&]{10,} : 위의 모든 조건을 만족하면서 최소 10자 이상의 길이
  • $ : 문자열의 끝

 

Password1! 같은 비밀번호는 이 정규 표현식을 만족하지만,

password PASSWORD1! 같은 비밀번호는 만족하지 않는다

 

 

 

StringUtils.isBlank

 

Apache Commons Lang 라이브러리에서 제공하는 메서드

문자열이 비어 있거나 공백으로만 구성되어 있는지 여부를 확인한다

import org.apache.commons.lang3.StringUtils;

public static void main(String[] args) {
    String str1 = " ";
    String str2 = "";
    String str3 = null;
    String str4 = "abc";

    System.out.println(StringUtils.isBlank(str1)); // true
    System.out.println(StringUtils.isBlank(str2)); // true
    System.out.println(StringUtils.isBlank(str3)); // true
    System.out.println(StringUtils.isBlank(str4)); // false
}

 

str 이 null 이면 true 를 반환

str 이 비어 있는 문자열("")이면 true 를 반환

str 이 공백 문자로만 구성된 문자열이면(" ", "\t", "\n" 등) true 를 반환

그 외의 경우에는 false 를 반환하게 된다

 

 

*️⃣ 적용

// 비밀번호 유효성 검사
private void validatePassword(String password, String newPassword, String userPassword) {
    if (StringUtils.isBlank(password) && StringUtils.isBlank(newPassword)) {
        return; // 둘 다 비어있으면 검사하지 않음
    }
    if (StringUtils.isBlank(password)) {
        throw new NullPointerException("현재 비밀번호를 입력해주세요");
    }
    if (StringUtils.isBlank(newPassword)) {
        throw new NullPointerException("새 비밀번호를 입력해주세요");
    }
    if (!userPassword.equals(password)) {
        throw new IllegalArgumentException("현재 비밀번호와 일치하지 않습니다.");
    }
    if (userPassword.equals(password)) {
        throw new IllegalArgumentException("현재 비밀번호와 동일한 비밀번호로는 변경할 수 없습니다.");
    }
}

 

 

 

'개발 일지 > TIL' 카테고리의 다른 글

[ #37 ] TIL  (0) 2024.06.07
[ #36 ] TIL  (0) 2024.06.05
[ #34 ] TIL  (1) 2024.06.03
[ #33 ] TIL  (0) 2024.05.31
[ #32 ] TIL  (0) 2024.05.30