루나의 TIL 기술 블로그

위스타그램 2 로그인기능 구현

|

[Mission 4] 로그인 기능 구현

  • 로그인을 위한 View를 작성해야합니다. **로그인 정보(이메일, 비밀번호)
  • 로그인을 할 때는 사용자 계정과 비밀번호가 필수입니다.
  • 계정이나 패스워드 키가 전달되지 않았을 경우, {“message”: “KEY_ERROR”}, status code 400 을 반환합니다.
  • 계정을 잘 못 입력한 경우 {“message”: “INVALID_USER”}, status code 401을 반환합니다.
  • 비밀번호를 잘 못 입력한 경우 {“message”: “INVALID_USER”}, status code 401을 반환합니다.
  • 로그인이 성공하면 {“message”: “SUCCESS”}, status code 200을 반환합니다.
#yooyoung > users > urls.py
from django.urls import path
from .views      import SignUp, SignIn

urlpatterns = [
    path("/signup", SignUp.as_view()),
    path("/signin", SignIn.as_view())
]
#yooyoung > users > views.py
class SignIn(View):
    def post(self, request):
        try: #예외처리
            data = json.loads(request.body)
            #프론트에서 json으로 데이터 받기

            if (data["email"] == "") or (data["password"] == ""):
                return JsonResponse({'message': 'KEY_ERROR'}, status=400)
                #이메일이나 비밀번호가 입력되지 않았으면 에러 반환
            
            if not User.objects.filter(email=data['email']).exists():
                return JsonResponse({'message': 'INVALID_USER'}, status=401)
                #유저가 입력한 이메일이 디비에 존재하지 않으면 에러 반환

            if not User.objects.filter(password=data['password']):
                return JsonResponse({'massage': 'INVALID_USER'}, status=401)
                #유저가 입력한 이메일이 존재해서 넘어왔으나 비밀번호가 디비와 일치하지 않으면 에러 반환

            if User.objects.filter(email=data['email']) and User.objects.filter(password=data['password']):
                return JsonResponse({'message': 'SUCCESS'}, status=200)
                #유저가 입력한 이메일과 비밀번호가 디비와 일치하면 성공

        except KeyError:
            return JsonResponse({'massage': 'KEY_ERROR'}, status=400)
            #예외처리 : 원본 코드에서 없는 key를 접근하려고 했을때 KeyError 가 발생

http 상태 코드

1xx (정보): 요청을 받았으며 프로세스를 계속한다
2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다

200(성공): 서버가 요청을 제대로 처리했다는 뜻이다. 이는 주로 서버가 요청한 페이지를 제공했다는 의미로 쓰인다.
400(잘못된 요청): 서버가 요청의 구문을 인식하지 못했다.
401(권한 없음): 이 요청은 인증이 필요하다. 서버는 로그인이 필요한 페이지에 대해 이 요청을 제공할 수 있다. 상태 코드 이름이 권한 없음(Unauthorized)으로 되어 있지만 실제 뜻은 인증 안됨(Unauthenticated)에 더 가깝다.
403(Forbidden, 금지됨): 서버가 요청을 거부하고 있다. 예를 들자면, 사용자가 리소스에 대한 필요 권한을 갖고 있지 않다. (401은 인증 실패, 403은 인가 실패라고 볼 수 있음)

401은 누구세요 403은 너는 권한이 없어요