Computer Programming/AI

TIL_Django Project, Default Password Validators

JYCoder 2023. 9. 15. 20:54

Django team project 중 내가 구현한 부분은 회원가입, 로그인, 로그아웃, 특정한 user의 feed만 모아보는 page이다.

 

이 중 회원가입 시에 password의 조건을 확인해 주는 기능을 django에서 어떻게 하는지 찾아보니 이런 기능을 'password validation'라고 하는 것을 알았다.

 

Django는 기본적으로 settings.py에서 password validation 기능을 제공해 주고 있다.

# settings.py

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

다음과 같이 네가지의 default validators가 있다.

 

UserAttributeSimilarityValidator

password가 특정한 값과 다른지 확인해 준다.

user_attributes("username", "first_name", "last_name", "email")와 max_similarity(0.7)이 default 값으로 되어 있고, 이 값들을 원하는 값으로 바꿔줄 수 있다. 예를 들어 email 값이 password와 비슷한 것을 확인하고 싶다면 다음과 같이 정해주면 된다.

{
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    'OPTIONS': {
         'max_similarity': 0.5,
         'user_attributes': ("email")
      }
},

 

MinimumLengthValidator

password의 최소 길이 값을 확인해 준다.

{
   'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
   'OPTIONS': {
       'min_length': 10,
    }
},

 

CommonPasswordValidator

password가 요즘 많이 쓰이는 흔한 20,000개 중의 값은 아닌지 확인해 준다.

 

 

NumericPasswordValidator

password의 전체가 숫자로만 이루어지지는 않았는지 확인해 준다.

 

 

이 외에 custom을 하고 싶다면 validators.py를 새로 생성하여 작성해 주면 된다.

이 site에 가면 다양한 custom 예시들을 볼 수 있다.

https://www.letscodemore.com/blog/how-to-add-custom-password-validators-in-django/

 

나의 팀 프로젝트에도 적용해 봐야겠다.

LIST