View
1. 회원가입을 한다.
-> 백서버 : DB에 회원의 정보가 저장됨.
2. 로그인을 한다.
-> 백서버 : 로그인시 입력한 정보와 DB에 저장된 회원의 정보가 일치하면 로그인이 성공되며, 백 서버에서는 토큰(token)을 발행해준다.
# 로그인시 토큰 발행 로직
class Login(View):
def post(self, request):
try:
data = json.loads(request.body)
if not User.objects.filter(email=data['email']).exists():
return JsonResponse({"message": "존재하지 않는 아이디입니다!"}, status=401)
current_user = User.objects.get(email=data['email'])
if not bcrypt.checkpw(data['password'].encode(), current_user.password.encode()):
return JsonResponse({"message": "비밀번호가 일치하지 않습니다!"}, status=401)
token = jwt.encode({"id": current_user.id}, SECRET_KEY, algorithm=ALGORITHM)
return JsonResponse({
"message" : "accepted",
"auth_token": token,
"user_name" : current_user.name
}, status=200)
except KeyError:
return JsonResponse({"message": "KEY ERROR"}, status=400)
except JSONDecodeError:
return JsonResponse({"message": "INVALID DATA FORMAT"}, status=400)
3. 백서버에서 발행해준 토큰(login-token)을 프론트단에서는 localStorage에 저장한다.
4. 프로트단에서는 페이지 이동시마다, localStorage에 저장되어있는 토큰을 가져와 http request시에 headers의 변수(authorization)에 담고, 백서버 접근 허가의 용도로 이 토큰을 백서버에 넘겨주게된다.
5. 백에서는 서버에 접근하는 허가를 내주기전에 넘겨받은 토큰을 검증하는 데코레이터 로직을 통해 해당 토큰이 유효한 토큰인지 확인 후 응답을 해주게 된다.
'PYTHON' 카테고리의 다른 글
Python을 Python답게) 진법 변환 - int(x, base=10) 함수 (0) | 2021.12.30 |
---|---|
Python을 Python답게) 몫과 나머지 - divmod (0) | 2021.12.30 |
TIL | PYTHON_Session_로그인 & 회원가입 (0) | 2021.08.25 |
TIL | codecata_week2day2_숫자중에서 과반수가 넘은 숫자를 반환 (0) | 2021.08.25 |
TIL 42 | PYTHON_git_hub_repository_clone (0) | 2021.08.19 |
reply