def user_insert(userID, userPW, userNICK):
bytes_password = userPW.encode('UTF-8')
bytes_hashed_password = bcrypt.hashpw(bytes_password, bcrypt.gensalt())
new_user = userDB(userID, bytes_hashed_password.decode('UTF-8'), userNICK)
db.session.add(new_user)
db.session.commit()
result = 'success'
return result
패스워드를 해시함수로 변환하기 위해서는 우선 string 을 bytes로 변환하기 위해 인코딩 한다.
userPW.encode('UTF-8')
해시 패스워드로 만들고 DB에 저장할땐 바이트로 들어가지 않기때문에 꼭 string 으로 디코딩 해주고 DB에 넣어야한다.
new_user = userDB(userID, bytes_hashed_password.decode('UTF-8'), userNICK)
def user_login(userID, password):
bytes_password = password.encode('utf-8')
user_byID = userDB.query.filter(userID == userDB.user_id).first()
if user_byID:
if bcrypt.checkpw(bytes_password, user_byID.user_pw.encode('utf-8')):
return True
else :
False
로그인 하기 위해서는 입력받은 비밀번호를 다시 byte로 인코딩한다.
인코딩 한 후 bcrypt.checkpw 로 같은지 확인하는데 DB에 저장되어있는 PW는 string 으로 디코딩된 상태여서 다시 byte로 인코딩한다.