728x90
서론
프로젝트를 하는데, 입력값에 대해서 요구사항이 위와 같았습니다.
따라서 Java Bean Validation API에서 제공하는 @Pattern 어노테이션을 사용하기로 했습니다!
@Pattern 어노테이션은 Java Bean Validation API에서 정규 표현식을 사용해 문자열 입력 값의 형식을 검증하는 데 사용됩니다.
자세한 내용은 다음 글에서 확인 가능합니다.
구현
첫 번째 정규 표현식
@Pattern(regexp = "^[a-z0-9]{4,10}$")
- ^
- 문자열의 시작을 의미합니다.
- [a-z0-9]
- 소문자 알파벳(a-z) 또는 숫자(0-9) 하나를 의미합니다.
- {4,10}
- 이 패턴이 4자에서 10자까지 반복되어야 한다는 것을 의미합니다.
- $
- 문자열의 끝을 의미합니다.
이 정규 표현식은 4자에서 10자 사이의 길이를 가지며, 문자와 숫자만 포함된 문자열을 검증합니다. 즉, 문자열이 소문자 알파벳과 숫자로만 구성되어 있어야 하며, 길이는 4자에서 10자 사이여야 합니다.
두 번째 정규 표현식
@Pattern(regexp = "^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,15}$")
- ^
- 문자열의 시작을 의미합니다.
- (?=.*[a-zA-Z])
- 문자열 내에 적어도 하나의 영문 대소문자가 포함되어야 함을 의미합니다.
- (?=.*\\d)
- 문자열 내에 적어도 하나의 숫자가 포함되어야 함을 의미합니다.
- (?=.*[@$!%*?&])
- 문자열 내에 적어도 하나의 특수 문자(@, $, !, %, *, ?, &)가 포함되어야 함을 의미합니다.
- [A-Za-z\\d@$!%*?&]
- 허용되는 문자 집합으로, 대소문자 알파벳, 숫자, 특정 특수 문자를 의미합니다.
- {8,15}
- 이 패턴이 8자에서 15자까지 반복되어야 한다는 것을 의미합니다.
- $
- 문자열의 끝을 의미합니다.
이 정규 표현식은 8자에서 15자 사이의 길이를 가지며, 영문 대소문자, 숫자, 그리고 특수 문자(@, $, !, %, *, ?, &)가 포함된 문자열을 검증합니다. 문자열에는 최소한 하나의 영문 대소문자, 하나의 숫자, 그리고 하나의 특수 문자가 포함되어야 합니다.
위와 같이 username을 "a"로 회원가입을 요청한다면, 403에러가 발생합니다.
또한 로그를 보면, 위와 같이 검증에 실패한 입력 값이 [a]라는 문자열이라는 로그를 확인할 수 있습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.08.28 - Git 브랜치 전환 시 파일이 계속 보이는 이유와 해결 방법 (0) | 2024.08.28 |
---|---|
[TIL, 일일 회고] 2024.08.27 - Spring Security와 @AuthenticationPrincipal을 활용한 관리자 및 사 (0) | 2024.08.27 |
[TIL, 일일 회고] 2024.08.25 - 랜덤 시크릿 키 생성 방법 (openssl rand) (0) | 2024.08.25 |
[TIL, 일일 회고] 2024.08.24 - 외래 키 주인❗️ (1) | 2024.08.24 |
[TIL, 일일회고] 2024.08.23 - JPA Entity 클래스 간의 참조: 의존성 주입이 아닌 FK 관계를 위한 설계 (0) | 2024.08.23 |