westagram 과제 코드리뷰(Signin View)
class SigninView(View): def post(self, request): data = json.loads(request.body) try: email = data['email'] password = data['password'] name = data.get('name', None) phone_number = data.get('phon_number', None) # if not User.objects.filter(email=email).exists(): return JsonResponse({'MESSAGE':'INVALID_USER'}, status=401) # user = User.objects.get(email=email) hashed_password = user.password.encode('utf-8') # if not bcrypt.checkpw(password.encode('utf-8'), hashed_password): return JsonResponse({'MESSAGE':'INVALID_USER'}, status=401) # access_token = jwt.encode( {'user_id' : user.id}, SECRET_KEY, algorithm = 'HS256' ) # return JsonResponse({'MESSAGE':'SUCCESS', 'ACCESS_TOKEN':access_token}, status=200) # except KeyError: return JsonResponse({'MESSAGE':'KEY_ERROR'}, status=400) ```
-로그인을 위한 SigninView 리뷰
1. 프론트로부터 request를 받아 json.loads 함수를 통해 파이썬 형식으로 변환
2. 변환된 데이터를 미리 만들어 둔 데이터베이스에 저장
3. filter함수를 통해 User 클래스 내에 request로 요청받은 email 값을 추출하고 요청받은 값이 데이터베이스 내에 없다면 메세지를 띄움
4. request로 요청받은 email 값을 user 변수에 저장
5. hashed_password 변수에 요청받은 user의 password를 인코딩하여 저장(password를 해쉬 시키기 위해서는 str형식에서 bytes형식으로 변환해야함)
6. bcrypt.checkpw 함수를 통해 요청받은 password값과 해쉬된 password 값을 비교하여 다르면 메세지를 띄움
7. acces_token 변수에 토큰을 저장하고 조건에 만족하면 메세지와 함께 토큰 값을 리턴시킴
Author And Source
이 문제에 관하여(westagram 과제 코드리뷰(Signin View)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jeonhs2482/westagram-과제-코드리뷰Signin-View저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)