암호화된 패스워드 property 추가하기

회원가입 모델에 암호화된 패스워드 property 추가하기

만들고자 하는 것

평문인 패스워드를 전달 받아 암호화된 패스워드를 저장하는 property 추가하기

만들기

이전 글인 이메일 유효성 검사하기를 이어서 진행한다.

SignUpRequest 에 password 추가

SignUpRequest 에 plain_password 를 추가한다.

class SignUpRequest(BaseModel):
    username: str
    email: EmailStr
    full_name: str
    plain_password: str

property 추가

꼭 프로퍼티를 추가하지 않고 함수를 추가해도 되지만 프로퍼티를 추가하는 것이 더 깔끔하다.

def get_hash_password():
    return hashed_password(plain_password)

hashed_password 라는 프로퍼티를 추가했다.

class SignUpRequest(BaseModel):
    username: str
    email: EmailStr
    full_name: str
    plain_password: str

    @property
    def hashed_password(self):
        return get_password_hash(self.plain_password)

테스트 케이스 작성하기

지난 글에 만든 test_schemas.py 에 테스트 케이스를 작성한다.

    def test_sign_up_password_hash(self):
        user_dict = {
            'username': 'test',
            'email': 'test@example.com',
            'full_name': 'test',
            'plain_password': 'test',
        }
        user = SignUpRequest(**user_dict)

        self.assertTrue(user.hashed_password is not None)
        self.assertTrue(verify_password(user.dict()['plain_password'], user.hashed_password))

이로써 자동으로 compute 되어 관리할 수 있는 property 를 추가하였다.


이메일 유효성 검사하기
DB 에 User Insert 하기
NCloud LB & SourcePipeline 구축하기
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지