✏️ 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 |