Django | Instagram 회원가입 로그인 암호화

2136 단어 djangodjango

[Mission 5] 회원가입 비밀번호 암호화 적용

  • 유저가 가입할 때 비밀번호를 암호화에서 DB에 저장

1. 초기세팅

우선 bcrypt , JWT 라이브러리를 설치한다.

pip install bcrypt
pip install pyjwt

bcrypt는 인증 구현에 앞서, 개인정보의보호를 위해 필수적으로 해야하는 요소인 비밀번호 암호화를 할 수 있게 해주는 라이브러리!

2. requirements.txt에 설치한거 저장

pip freeze > requirements.txt

3. bcrypt 라이브러리 사용하여 비밀번호 암호화 진행

python 인터프리터를 실행한 후 설치한 라이브러리를 import 해주기!

import bcrypt
password = '1234'
hashed_password = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt())
print(hashed_password)

실제 적용:

# users > views.py

import json, re, bcrypt, jwt #brcypt(암호화)와 jwt(토큰) 임포트
#...
from westagram.settings  import SECRET_KEY #세팅파일에서 시크릿 키 불러오기

class SignUp(View):
    def post(self, request):
        try:
            data = json.loads(request.body)
            hashed_password = bcrypt.hashpw(data['password'].encode('UTF-8'), bcrypt.gensalt())
            #유저에게 받은 새 문자열 비밀번호를 인코딩해서 바이트형태로 이진화하고, 비크립트로 암호화한다.

            #...

            User.objects.create(
                password     =   hashed_password.decode('UTF-8'),
                #DB에 문자열로 저장하기 위해서 암호화된 바이트형태의 비밀번호를 디코딩해준다.
            )

좋은 웹페이지 즐겨찾기