로그인&회원가입 정도만 지원하는 초미니 인스타그램을 구동할 수 있는 API 시스템을 만들어보자!
$ pip install pyjwt
#views.py
...
import jwt #권한이 있는지 확인 후 토큰을 발급해주는 라이브러리 추가
...
class SignInView(View):
def post(self, request):
try:
data = json.loads(request.body)
user = User.objects.get(email=data['email'])
# 받은 email과 동일한 email을 가진 인스턴스를 User class에서 가져옴
if not bcrypt.checkpw(data['password'].encode('utf-8'), user.password.encode('utf-8')):
return JsonResponse({"message" : "INVALID_USER"}, status=401)
access_token = jwt.encode({"id" : user.id}, settings.SECRET_KEY, algorithm = settings.ALGORITHM)
#json 웹 토큰 생성
return JsonResponse({
"access_token" : access_token
}, status=200)
except KeyError:
return JsonResponse({'message':'KEY_ERROR'}, status=400)
except User.DoesNotExist:
return JsonResponse({"message" : "INVALID_USER"}, status=401)
http -v POST 127.0.0.1:8000/users/signin email='sunnyday@gmail.com' password='TJsl'
사실 이 사진은 validation이 적용이 안 된 패스워드로 가입된 경우다. 토큰 확인용으로는 문제 없으니까 쓴다.