항해99 5일차

심우진·2021년 9월 17일
0

오늘 미니프로젝트를 최종 마무리하고 배포했다.

주소 : http://wsnam.shop
깃허브 : https://github.com/namusik/getTravel
영상 : https://www.youtube.com/watch?v=fmjifF5qsaE

여행정보를 확인하고 후기작성이나 다른 사람들의 후기도 확인할 수 있다.

사용기술은 파이썬, 플라스크, 진자2 몽고디비, 제이쿼리, 벌마, aws EC2
를 이용하였고

JWT를 이용해서 로그인, 회원가입을 구현했다.
아이디와 닉네임 중복확인이 가능하다.

JWT로 사용자별 후기조회, 마이페이지와 내가 찜한 목록을 볼 수 있다.

아쉬웠던 점은 여행이미지를 크롤링 해와서 보여주고 싶었는데 회의하면서 업로드 방식으로 결정하고
업로드페이지를 따로 만들고 이미지를 각각 올려주었다.

로그인 기능을 구현하면서 알게 된 점은 JWT 방식이다.

쿠키/세션 방식과 JWT 로그인 토큰 장단점

쿠키/세션 방식은 사용자가 로그인을 하면 서버에서는 사용자를 확인하고 회원 세션을 생성한 후 ID를 발행한다. 사용자는 세션 ID를 받아 쿠키에 저장한 후 서버는 인증이 필요할때 마다 사용자의 쿠키를 받아서 검증한 후 데이터를 사용자에게 보내준다.

  • 장점 : 쿠키를 매개로 인증을 거치기 때문에 중간에 요청이 노출되어도
    쿠키 자체는 유의미하지 않고 중요 정보는 서버 세션 저장소에 있기 때문에 비교적 안전하다.
  • 단점 : 서버에서 추가적인 세션만의 저장공간을 사용하기 때문에 부하가 높아진다.

JWT(Json Web Token)는 크게 3가지 방식(Header, Payload, Verify Signature)으로
Header에는 암호화 방식, 타입등이 들어가고
Payload에는 서버에서 보낼 데이터(유저의 고유ID, 유효기간 등)가 들어간다.
Verify Signature는 인코딩한 header, payload에 Secret key를 더하여 서명한다.
방식은 사용자가 로그인을 하면 서버는 사용자를 확인하고 JWT토큰을 발급한다. 사용자는 토큰을 받아 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 실어 보내고 서버는 토큰을 검증 한후 데이터를 사용자에게 준다.

  • 장점 : JWT를 발급한 후 검증한 하면 되기 때문에 간편하다. 세션/쿠키처럼 별도의 저장소가 필요없기 때문에 서버를 확장하거나 유지, 보수하는데 유리하다. 그리고 확장성이 뛰어나다. 토큰을 기반으로 한 다른 인증 시스템에 접근이 가능하다(google, facebook)
  • 단점 : 이미 발급된 JWT는 유효기간이 완료될 때까지 해커가 신나게 정보를 털어갈 수 있다.
    payload를 디코딩하면 정보 확인이 가능해서 중요한 유저정보는 넣을 수 없다.
    해시함수를 사용해서 길이가 길어 인증이 필요한 요청이 많아질수록 서버의 낭비가 발생한다.

0개의 댓글