Django

[Django API] Django + JWT

torimuk 2022. 4. 26. 11:17

Problem


Django API와 JWT를 연계하여 로그인 시스템 구현하기

 

Solution


1. djangorestframework-jwt 를 설치한다.

pip install djangorestframework-jwt

2. jwt를 import 한 뒤, 로그인과 관련된 로직을 작성한다.

 

3. 입력한 ID와 PW가 DB의 값과 일치한 경우, 다음과 같이 access_token을 작성하여 response에 포함시켜준다.

ALGORITHM = 'HS256'			# 알고리즘을 입력.
SECRET_KEY = 'secret_key'	# 변하지 않는 secret_key를 입력.

if match_admin(user_res["user_pw"], admin_info["password"]):	# 패스워드가 일치할 경우
    access_token = jwt.encode({'id': user_res["user_id"]}, SECRET_KEY, algorithm=ALGORITHM)
    data = {"token": access_token.decode("utf8")}

4. 이후 프론트엔드와 통신 시 access_token을 사용한다. access_token 확인 로직은 다음과 같다.

access_token = jwt.decode(token, SECRET_KEY, algorithm=ALGORITHM)