프론트와 백엔드로 이루어진 팀원들끼리 직접 만든 사이트에서 로그인 기능을 구현하는 실습을 진행했다. 이 실습으로 인해 각자의 역할과 위치에 대해 알게됐고, 공부에 재미가 붙기 시작했다.
프론트
fetcher = () => {
fetch('http://10.58.1.200:8000/account/sign-in', {
method: 'POST',
headers: { 'Content-type' : 'application/json'},
body: JSON.stringify({
'email' : this.state.id,
'password' : this.state.pw
})
})
.then(response => {
return response.json();
})
.then(response => {
if (response.token) {
localStorage.setItem('wtw-token', response.token);
}
})
}
백
class Login(View):
def post(self, request):
data = json.loads(request.body)
try:
if Account.objects.filter(email = data['email']).exists():
user = Account.objects.get(email = data['email'])
if bcrypt.checkpw(data['password'].encode('utf-8'), user.password.encode('utf-8')):
token = jwt.encode({'email' : user.email}, 'wecode', algorithm='HS256').decode('utf-8')
return JsonResponse({'token' : token}, status=200) #토큰
return JsonResponse({'message' : "Wrong password"}, status=401)
return JsonResponse({'message' : "Wrong information"}, status=401)
except KeyError:
return JsonResponse({'message' : "INVALID_KEYS"}, status=404)
thanks to
블로그 작성에 도움을 주신 팀원분들과 심형민님께 감사드립니다