1주차에 배운것들
1. 미니프로젝트 마무리
0) JWT 인증방식을 이용한 회원가입/로그인 기능의 놀이공원 비유
- 회원가입 = 표를 사는것
- 로그인 = 표를 손목에 채우는것
- JWT token = 표
- 로그인 유지 = 표를 사용할 수 있는 시간
1) 로그인 기능
- JWT 인증 방식이란?
- JSON Web Token의 줄임말, JSON을 사용하여 정보를 전달하는 웹표준
- 로그인을 하면 서버에서 회원에게 발급되는 토큰을 브라우저에 넘겨주고 쿠키 형식으로 저장된다.
- 참고 블로그: https://tansfil.tistory.com/58?category=255594
쉽게 알아보는 서버 인증 1편(세션/쿠키 , JWT)
앱 개발을 처음 배우게 됐을 때, 각종 화면을 디자인해보면서 프론트엔드 개발에 큰 흥미가 생겼습니다. 한때 프론트엔드 개발자를 꿈꾸기도 했었죠(현실은 ...) 그러나 서버와 통신을 처음 배웠
tansfil.tistory.com
- 로그인 시퀀스
- id/pw 입력
- pw를 'sha256 단방향 암호화' 방식으로 암호화 한후 같은 정보를 db에서 찾음
- -1 회원정보가 있는 아이디와 토큰 만료시간을 저장한 토큰을 발급/ -2 회원 정보가 없는 경우 메세지 전송
- 토큰을 쿠키에 저장하여 만료시간 까지 유지함
- 로그아웃시에 해당 토큰을 삭제
2) 회원가입기능
- 회원가입 시퀀스
- 아이디/비밀번호 를 입력하고 회원가입
- 아이디와 'sha256 단방향 암호화' 방식으로 암호화된 비밀번호가 db에 저장됨
- sha256 단방향 암호화 방식이란?
비밀번호를 개발자도 알 수 없도록 암호화하여 그 값을 저장할때 사용하는 방식이다. 단방향이어서 암호화된 값을 반대로 해석할 수 없다.
2. Jinja2를 이용한 서버사이드 렌더링
- JInja2란?
Jinja2는 플라스크에서 제공하는 템플릿 엔진이다. - 템플릿 엔진이란?
웹 템플릿 엔진은 지정된 템플릿 양식과 데이터가 합쳐져서 HTML 문서를 출력하는 소프트웨어
따라서, 특정한 형식의 웹페이지틀과 데이터를 합쳐져서 제공하도록 하는 것이라고 이해하면 된다. - Jinja2의 장점
- Jinja2는 HTML을 파이썬 코드로 제어한다는 점에서 매우 유용하다.
- HTML 내에서 for문, if문부터 변수 제어 등 파이썬 기능을 다 사용 가능하다.
- 변수출력 기능 {{변수명}} : 서버에서 render_template("000.html", 변수명=000)으로 해당 html을 렌더링한다고 하자. 그럼 html 파일에서는 해당 변수를 {{ 변수 }} 와 같이 더블 중괄호 안에 집어넣음으로써 서버에서 사용하던 변수를 클라이언트에서도 편하게 사용할 수 있다!
- render_template() 이란?
서버 프로그램과 Jinja 템플릿 엔진을 사용한 html 파일을 통합하는 역할을 하는 메소드 - 프로그램 기능 {% 제어문 %} : Jinja2의 핵심은 html에서 파이썬 코드를 짤 수 있다는 점이다. html에서 반복적으로 사용하거나 조건에 따라 기능하는 코드를 만들 때 파이썬 코드를 짤 수 있다
- 예제
<body>
<div class="container">
<p> 사용자: {{ userName }} </p>
<p> 3번째 상품: {{goodsList[2]}} </p>
<p> 전체 상품 목록 </p>
<ul>
{% for goods in goodsList %}
<li>{{goods}}</li>
{% endfor %}
</ul>
</div>
<body>
- 서버사이드 렌더링 (SSR)
- 렌더링이란?
코드로 작성된 내용을 브라우저에서 웹페이지에 표시해 주는 것 - 서버 사이드 렌더링(SSR)은서버 단에서 웹페이지를 생성하고 바로 브라우저에 띄우는 방식을 말한다.
- 장점
- 검색엔진 최적화(SEO)기능: 서버사이드 렌더링으로 얻을 수 있는 가장 큰 장점!
- 성능 개선: 첫 렌더링된 html을 클라이언트에게 전달해주니 초기 로딩속도를 많이 줄이기 가능.
- 단점
- 프로젝트의 복잡도 증가
- 페이지 이동시 화면이 깜빡임 (새 페이지로 이동하는 것이니)
- 서버 렌더링에 따른 부하 발생 (매번 서버 연산 돌려야 하니까)
- 렌더링이란?
4. 총평
역시나 쉽지는 않다. 그래도 새로운 것을 배우는 것은 재미있다. 프로젝트 내에서 크게 기여한 바는 없었던 것 같다. 내가 할수 있는 것을 찾아서 하려고 했지만 핵심적인 기능 구현에서는 할 수 있는 것이 없었다. 멱살잡혀 끌려가는 느낌이지만 그래도 끌려가는 것도 가는 것 아니겠는가.. 문제가 많다. 하지만 행동하기에 문제에 직면하는 것이다. 문제-해결의 반복이 성장이라는 사실을 잊지 말자.
'Hanghae99' 카테고리의 다른 글
| 221122 TIL 알고리즘 문제풀이 3 (0) | 2022.11.22 |
|---|---|
| 221121 TIL 알고리즘 문제풀이 2 (0) | 2022.11.22 |
| 221119 JS 알고리즘 문제풀이 1 (0) | 2022.11.20 |
| 221118 TIL Javascript 기본 (0) | 2022.11.19 |
| 221115 TIL details, main page 작성 (0) | 2022.11.15 |