훈훈훈

파이썬(Django) :: 회원가입 시 입력 값 검증 함수 본문

파이썬/Django

파이썬(Django) :: 회원가입 시 입력 값 검증 함수

훈훈훈 2020. 3. 21. 17:56

이번에는 회원가입 시 입력 값을 체크하는 함수를 정리하려고 한다.

 

먼저, 회원가입 시 이메일과 패스워드만 입력 받는다는 가정하에 진행하려고 한다.

 

아래 코드를 살펴보면 validate_special_char는 이메일 입력 값을 그리고  validate_password 는 패스워드 입력 값을 검증하는 함수이다.

 

이메일 검증을 하는 함수 이름에 char 단어를  넣은 이유는 해당 함수는 실행 시키기 이전에 이메일 형식인지 검증해주는 모듈을 먼저 실행 시킨 후 해당 함수를 이용해 @ 앞에 있는 입력 값에 대한 검증을 진행할 목적으로 만들었기 때문이다.

 

해당 함수를 살펴보면 정규표현식으로 알파벡 소(대)문자 그리고 숫자 이외에는 허용하지 못하도록 작성하였다.

 

그 다음 패스워드를 검증하는 validate_special_char 함수를 살펴보면 lambda를 사용하여 대문자, 소문자 그리고 숫자를 포함하여 10자리 이상인지를 검증한다. 추가적으로 패스워드에 공백입력은 허용하지 않았다.

def validate_special_char(email):
    check_element  = email.split("@")[0]
    return bool(re.search("[^a-zA-Z0-9]", check_element))
    
def validate_password(password):
    validate_condition = [
        lambda s: any(x.isupper() for x in s),
        lambda s: any(x.islower() for x in s),
        lambda s: any(x.isdigit() for x in s),
        lambda s: len(s) == len(s.replace(" ","")),
        lambda s: len(s) >= 10
    ]
    
    for validator in validate_condition:
        if not validator(password):
            return True

위에 작성한 함수를 아래와 같이 Django에서 적용할 수 있다.

이메일 검증을 하는 validate_email 모듈을 사용하여 1차적으로 검증 후 위 함수르 2차 검증을 진행하였다.

from django.core.validators  import validate_email


validate_email(data["email"])

if validate_special_char(data["email"]):
    return JsonResponse({"message" : "INVALID_CHAR"}, status=400)

if validate_password(data["password"]):
    return JsonResponse({"message" : "INVALID_PASSWORD"}, status=400)

 

* 관련 글


간단한 회원가입/로그인 예제
회원가입/로그인 + 암호화,토큰
회원가입/로그인 입력 값 필터
- 이메일 인증
- 유닛 테스트

Comments