TIL_21.11.01

이서현·2021년 11월 1일
0

항해99

목록 보기
1/14
post-thumbnail

항해99 시작!


팀원들과 미니프로젝트 시작

프로젝트 이름: 사랑방(SarangBang)
소개: 나만 알고 있기 아까운 우리 동네 예쁜 카페들을 자랑하고 서로 구경함으로써 내가 모르는 동네에 갔을 때도 쉽게 카페를 찾을 수 있도록 공유하는 플랫폼 입니다.

개발해야하는 기능들

  • 로그인 | POST | /api/login | {'id': id, 'pwd': pwd} | 메인 페이지
  • 회원 가입 | POST | /api/membership | {'id' : id, 'pw' : pw} | 가입 완료 메세지
  • 글 목록 조회 | GET | /api/posts | 글 리스트
  • 글 작성 | POST | /api/posts | {'img' : img, 'title' : title, 'adress': address, 'review' : review} | 작성 글 데이터
  • 글 검색 | GET | /api/posts | query={검색어} | 검색 결과 글 리스트

깃 주소
https://github.com/SeongeunYang/SarangBang

역할분배
서현 - 로그인
민기 - 회원가입
민지 - 글 목록
성은 - 글 작성

메인 테마색
바이올렛, 파란색, 하늘색
버튼 등 포인트 줄 곳에 빨간색 포인트!

필수 포함: jinja2템플릿 사용, JWT 인증 방식으로 로그인 구현

jinja2란?

파이썬 많이 사용하는 템플릿 엔진,
기본적으로 flask애플리케이션 폴더 안에 위치한 서브폴더에서 템플릿을 검색한다
그곳에 위치한 HTML파일을 이용하여 렌더링한다

<body>
    {% include "layout_sections/header.html" %}

    {% block content %}
    {% endblock %}

    {% include "layout_sections/footer.html" %}
</body>

변수도 담을 수 있고
for문, if문도 사용가능

템플릿엔진 사용 이유
1. 재사용성이 높다
2. 유지보수에 용이
3. 코드를 많이 줄일 수 있다

JWT란?

JWT(Json Web Token) 란, Json 포맷을 이용하여 사용자에 대한 속성을 저장하는
Claim 기반의 Web Token 입니다.
JWT 는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달합니다.
주로 회원 인증이나 정보 전달에 사용되는 JWT는 아래의 로직을 따라서 처리됩니다.

회원가입 시, 사용자가 지정한 아이디와 비밀번호를 그대로 저장하는게 아니라 암호화 필요
로그인을 할 때 서버한테 내가 로그인했다는 걸 알려야 함
그때 인증과 인가 단계가 필요
인증: 쉽게 생각하면 인증(회원가입, 로그인)을 받은 사용자
인가: 사용자가 로그인한 걸 알아보고, 응 어서와~~ 해주는 거

서버는 사용자가 로그인 되어있다는 걸 어떻게 인지할까?
그냥 크롬같은데 아이디,비밀번호를 저장해서 인가가 필요할 때 불러오는 방법은?

너무 과한 작업이 필요
데이터베이스에 있는 사용자의 아이디비밀번호 해시값을 꺼내온 다음에
사용자의 암호를 복잡한 알고리즘으로 계산한 값과 일치하는지 확인 작업이 필요,
보안상 위험

전통적으로 세션을 많이 사용(영화권처럼 생각하면 된다)
반은 서버가 가지고 반은 내가 갖고

그런데 허점이 있다
많은 사용자가 한번에 접속할 경우 메모리부족, 서버가 문제 있을 때 에러가 난다
재부팅을 하면 다 날아간다

쿠키, 세션 말고 다른 방법 = 토큰방식
인코팅또는 암호화된 데이터를 이어붙인 형태
header, payload, signature로 이루어져 있음
base64로 디코딩 하면 JSON형식으로 된 정보들이 담겨져 있다
토큰에 담긴 사용자 정보 등의 데이터를 claim이라 한다
특별한 암호화도 아니고 base64로 인코딩 되어 있는거면
다시 디코딩해서 볼 수 있다는 건데? 이 문제는 어케 해결?
그래서 시크릿키 사용 시크릿키는 서버에 감춰두기
그래서 아무리 사용자가 디코딩을 해서 사용한다 해도
시크릿키를 모르기 때문에 토큰에 접근할 수 없다

엑세스 토큰, 리프레시 토큰도 있다

내일 내가 해야 하는 것
1. 회원가입, 로그인 API 공부하고 만들기
2. HTTP 이해하기
3. 레파지토리 클론, 폴더 정리
4. header.html이랑 footer.html 만들기

profile
🌿💻💪🧠👍✨🎉

0개의 댓글