오늘 미니프로젝트를 최종 마무리하고 배포했다.
주소 : http://wsnam.shop
깃허브 : https://github.com/namusik/getTravel
영상 : https://www.youtube.com/watch?v=fmjifF5qsaE
여행정보를 확인하고 후기작성이나 다른 사람들의 후기도 확인할 수 있다.
사용기술은 파이썬, 플라스크, 진자2 몽고디비, 제이쿼리, 벌마, aws EC2
를 이용하였고
JWT를 이용해서 로그인, 회원가입을 구현했다.
아이디와 닉네임 중복확인이 가능하다.
JWT로 사용자별 후기조회, 마이페이지와 내가 찜한 목록을 볼 수 있다.
아쉬웠던 점은 여행이미지를 크롤링 해와서 보여주고 싶었는데 회의하면서 업로드 방식으로 결정하고
업로드페이지를 따로 만들고 이미지를 각각 올려주었다.
로그인 기능을 구현하면서 알게 된 점은 JWT 방식이다.
쿠키/세션 방식은 사용자가 로그인을 하면 서버에서는 사용자를 확인하고 회원 세션을 생성한 후 ID를 발행한다. 사용자는 세션 ID를 받아 쿠키에 저장한 후 서버는 인증이 필요할때 마다 사용자의 쿠키를 받아서 검증한 후 데이터를 사용자에게 보내준다.
JWT(Json Web Token)는 크게 3가지 방식(Header, Payload, Verify Signature)으로
Header에는 암호화 방식, 타입등이 들어가고
Payload에는 서버에서 보낼 데이터(유저의 고유ID, 유효기간 등)가 들어간다.
Verify Signature는 인코딩한 header, payload에 Secret key를 더하여 서명한다.
방식은 사용자가 로그인을 하면 서버는 사용자를 확인하고 JWT토큰을 발급한다. 사용자는 토큰을 받아 저장한 후, 인증이 필요한 요청마다 토큰을 헤더에 실어 보내고 서버는 토큰을 검증 한후 데이터를 사용자에게 준다.