기록하는 개발자
항해 1주차 WIL; JWT, API 본문
1. 배운 점
첫번 째 정규 팀 프로젝트가 진행되어 4일동안 프로젝트를 진행하게 되었다. 미니 프로젝트임을 감안하여 되도록 아주 단순하게 만들려고 목표를 잡고 회의를 진행했다.
(1) JWT
토큰값을 저장해서 로그인을 유지시키기 위해 JWT (json web token) 기능을 사용했다.
내가 사용한 코드를 예로 들어 보겠다.
def sign_in():
# 로그인
id_receive = request.form['id_give']
pw_receive = request.form['pw_give']
pw_hash = hashlib.sha256(pw_receive.encode('utf-8')).hexdigest()
info = db.users.find_one({'id': id_receive, 'pw': pw_hash})
exists = bool(db.survey.find_one({"email": id_receive}))
print(f'login info {info}, {exists}')
if info is not None:
payload = {
'id': id_receive,
'exp': datetime.utcnow() + timedelta(seconds=60 * 60 * 24) # 로그인 24시간 유지
}
token = jwt.encode(payload, SECRET_KEY, algorithm='HS256').decode('utf-8')
#token = jwt.encode(payload, SECRET_KEY, algorithm='HS256')
print(f'user found {info}')
return jsonify({'result': 'success', 'token': token, 'exists': exists})
# 찾지 못하면
else:
print(f'user NOT found {info}')
return jsonify({'result': 'fail', 'info': info})
로그인을 시도하게 되면 유저 id와 pw, 그리고 설문지 참여 여부를 확인하게 된다.
직접 JWT 코드를 손코딩하면서 그 안에 구성된 header, payload, signature 에 대한 이해도를 높였다.
특히 playload에서 데이터를 가지고, 언제까지 가지고 있을지 지정하기 때문에 코딩하면서도 어떤 값을 보내도 얼마나 저장할 지 생각해 봤었다. 또, web 에서 검사기를 켜서 토큰값을 확인하면서 어떻게 기능이 돌아가는지 확인하는 시간을 가졌다!
(2) API
종합반 강의를 들으면서 공공포털 api를 사용했던게 생각난다 크롤링과 같이 써서 사용하려는 데이터를 손쉽게 가져오고 내가 만든 사이트에 퀄리티를 높일수 있었다. 그렇기 때문에, 사전 프로젝트와 첫주 프로젝트에 크롤링을 사용했다.
내가 구현하지 않은 기능을 사용하는 것은 참 매력적인 일이다. key과 사용 주소만 알면 아주 쉽게 사용할 수 있으니까.
2. 느낀 점
프로젝트를 진행하면서 가장 크게 느낀점은 항상 내가 생각했던 방향으로 굴러가지 않는다는 점이다. 그래서 어떤 일을 하든 기한이 5일이면 계획은 4일짜리로 잡고 내 개인적인 계획을 3일로 한다. 그렇게 되면 3일동안 내 분량을 완성하고 부족한 부분을 채울수 있고 생각하지 못한 일이 발생했을때 대처하기 수월하다.
지금 느끼는 것은 뿌듯함 뿐이다. 간단한 설문지 사이트 지만 중요하게 생각했던 JWT이용 로그인을 구현하는 파트를 색다르게 구현했기 때문이다. 설문지 사이트기 때문에 회원가입기능이 있으면 이상할 것이라 생각해 DB용으로 회원정보가 없다면 저장하고 이후 바로 로그인까지 한번에 할수 있도록 구현했다.

3. 아쉬운 점
(1) 우리팀은 4일을 모두 본인이 하려고 하는 기능구현에 초점을 맞춰 각자 시작했는데, 사실 첫 프로젝트이니 각자 생각대로 되지 않았던 부분이 많았던거 같다. 중간중간 좀더 활발하게 현재 상황을 공유했더라면 좀 더 효율적이었을까?
(하지만 우리팀은 하루에 2~3번정도 회의를 했었다!)
(2) 커뮤니케이션 부분에서도 서로 동의 했던 부분이라 하더라도 상대방이 확실히 이해했는지 각자 체크해야 했었는데 그부분이 좀 부족했던것 같다.
(3) 그리고 정말 아쉬운 부분은 마지막 4일차 때 시간을 내서 카카오톡 공유 기능을 추가하려고 했는데. 나의 미숙함으로 e2c 서버를 연동하는 것에 많은 시간을 할애하게 되어 구현하지 못했다. 이부분은 내가 시간이 나면 개인적으로 해볼 계획이다.
(4) 이건 정말 개인적인 아쉬움인데 건망증이 심해서 맨날 출석체크, 체크아웃 하는 것을 까먹는데 심지어 첫날에 16시간 공부해놓고 체크아웃 까먹어서 나혼자 0시간 찍었다... 출석도 까먹어서 2번 지각처리가 됐다. 정말 억울할 일이다.
'공부 일기장 > WIL' 카테고리의 다른 글
| [항해 최종 리뷰] 솔직헌...항해...리뷰........ (0) | 2022.04.25 |
|---|---|
| [항해 11주차] WOW.. 정말로 너무 바빴다. (0) | 2022.03.28 |
| [항해 4주차] ORM, noSQL vs SQL (0) | 2022.02.06 |
| [항해 3주차] WIL; Restful API, package.json (0) | 2022.01.28 |
| [항해 2주차] Node.js : JavaScript의 ES란?, ES5/ES6 문법 차이 (0) | 2022.01.24 |