django 로그인 뷰 에러 처리

김예랑·2021년 6월 26일
0

로그인 뷰 작성

# user/views.py

class SignInView(View):
    def post(self, request):
        data     = json.loads(request.body)
        email    = data['email']
        password = data['password']

	# 1.
        if not (email and password):
            return JsonResponse({'message': 'KEY_ERROR'}, status=400)
	# 2.
    	if not User.objects.filter(email=email).exists():
            return JsonResponse({'message': 'INVALID_USER'}, status=401)
	# 3.
        if User.objects.get(email=email).password != password:
            return JsonResponse({'message': 'INVALID_USER'}, status=401)
	# 4.
        return JsonResponse({'message': 'SUCCESS'}, status=200)

로직 안에서 에러 처리를 몇 가지 해주었다. (기본적으로 로그인 할 때 이메일 계정과 패스워드를 요구한다.)

  1. 로그인 할 때 이메일 계정과 패스워드는 필수적으로 입력해야 하므로 둘 중 하나라도 입력하지 않으면 에러를 반환한다. => KEY_ERROR(400)

  2. 입력한 이메일 계정이 등록되지 않은 계정일 경우 패스워드를 확인할 필요 없이 에러를 반환한다.
    => INVALID_USR(401)

  3. 등록된 이메일 계정을 입력한 경우 패스워드가 틀리다면 에러를 반환한다.
    => INVALID_USER(401)

  4. 위 3가지의 절차에서 에러를 반환하지 않으면 SUCCESS(200) 응답을 반환한다.

간단히 말하자면 이메일 계정과 패스워드를 입력 받고 올바른 계정과 패스워드가 맞는지 확인하는 로직이다.
하지만 에러 처리를 로직 안에서만 해줬기 때문에 예외적인 에러가 발생했을 경우 확인하기가 까다롭다.
이런 점을 보안하려면 try except 문을 사용하면 되겠다.

profile
안녕하세요. 백엔드 애송이 백송이 김예랑 입니다.

0개의 댓글