CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·주식한당 ·아이포니앙 ·MaClien ·일본산당 ·방탄소년당 ·개발한당 ·자전거당 ·안드로메당 ·이륜차당 ·소셜게임한당 ·육아당 ·AI당 ·나스당 ·소시당 ·가상화폐당 ·디아블로당 ·골프당 ·클다방 ·야구당 ·걸그룹당 ·젬워한당 ·리눅서당 ·영화본당 ·사과시계당 ·캠핑간당 ·패셔니앙 ·맛있겠당 ·IoT당 ·키보드당 ·라즈베리파이당 ·3D메이킹 ·X세대당 ·ADHD당 ·AI그림당 ·날아간당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·콘솔한당 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·물고기당 ·도시어부당 ·FM한당 ·포뮬러당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·바다건너당 ·PC튜닝한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·노젓는당 ·달린당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·창업한당 ·VR당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

PC/모바일 모던웹(NEMV) 제작 하기 강좌 고급편 21

13
2018-11-26 14:21:49 수정일 : 2018-11-26 14:33:21 211.♡.246.251
memi

모던웹(Node.js Express.js MongoDB vue.js)를 이용한 제작 강좌 고급편 올립니다.


지난 강좌

기초편: https://www.clien.net/service/board/lecture/12640795CLIEN

기본편: https://www.clien.net/service/board/lecture/12713811CLIEN

응용편(서버): https://www.clien.net/service/board/lecture/12746648CLIEN

응용편(사용자): https://www.clien.net/service/board/lecture/12790194CLIEN


개요

활용해야 할 실제 서버의 프론트는 다 오픈됩니다.

공개소스이기 때문에 백엔드도 오픈되어있죠.

그래서 실제 서버로 가기 위한 최소한의 공사를 했다고 생각하면 됩니다.


과정

비밀번호 암호화 하기

비밀번호를 평문으로 저장하면 큰일나겠죠?

노드 기본 모듈인 crypto 와 scrypt를 이용해서 단방향 암호화시켜서 비밀번호를 보호합니다.

바로가기


뷰 컴포넌트 사용하기

코드, 화면을 모듈화 하여 재사용 합니다.

뷰티파이가 어떻게 이루어져 있는 지 확인해 볼 수 있습니다.

바로가기


시간 계산하기: 모먼트(moment.js) 맛보기

날짜/시간 라이브러리중 가장 유명한 moment.js에 대해 간단히 알아봅니다.

바로가기


로그인 시한 제한하기(토큰 갱신)

공공장소에서 로그아웃을 까먹으면 큰일입니다.

토큰에 만료시간을 주고 재발급 토큰을 발급하는 방법을 만들어봅니다.

바로가기


게시판 관리 만들기

여러 게시판을 한 소스로 만들기 위해 게시판을 설계하고 관리를 해봅니다.

바로가기


게시판 모델 만들기

게시판과 게시물을 이어주기 위한 관계에 대해 생각해보고 설계해봅니다.

바로가기


게시판을 위한 메뉴 구성

뷰티파이의 그룹리스트를 이용해서 메뉴에 상하개념을 추가합니다.

바로가기


게시판 정보 읽기

게시물을 가져오기 위해 먼저 게시판 정보를 읽어서 표현해봅니다.

바로가기


게시판 게시물 API 만들기

게시판 데이터를 제공하기 위한 API를 설계하고 만들어봅니다.

요청 유형 파라메터(params) 내용(body or query) 설명
Create, POST _board 게시물 내용 어떤 게시판에 내용을 씀
Read, GET _board 없음 어떤 게시판의 게시물들을 가져옴
Update, PUT _id 수정된 게시물 내용 어떤 게시물의 내용을 변경
Delete, DELETE _id 없음 어떤 게시물의 내용을 삭제

바로가기


게시판 게시물 쓰고 읽기

게시물(article) API CRUD중 게시판 정보가 필요한 CR(Create Read)를 프론트에서 확인합니다.

바로가기


게시판 뷰티파이 테이블 사용하기

뷰티파이의 데이터테이블(v-datatable)을 이용해서 화면에 표시합니다.

바로가기


게시판 내용 읽기

게시물의 리스트는 용량이 얼마 안되지만, 내용은 엄청 클 수 있습니다.

리스트와 내용을 분리해서 API를 적용해봅니다.

요청 유형 파라메터(params) 내용(body or query) 설명
Create, POST _board 게시물 내용 어떤 게시판에 내용을 씀
Read, GET list/_board 없음 어떤 게시판의 게시물 목록을 가져옴 new!
Read, GET read/_id 없음 어떤 게시판의 게시물 내용을 가져옴 new!
Update, PUT _id 수정된 게시물 내용 어떤 게시물의 내용을 변경
Delete, DELETE _id 없음 어떤 게시물의 내용을 삭제

바로가기


게시판 내용 수정과 삭제

게시물(article)을 선택하여 UD(Update Delete)를 프론트에서 구현해봅니다.

바로가기


게시판 페이징과 정렬 처리하기

많은 양의 데이터를 처리하기 위해 페이징과 정렬을 구현해봅니다.

바로가기


게시판 재활용하기(뷰라우터)

게시판 코드는 하나지만 뷰라우터를 통해 코드 재활용해서 다른 게시판을 운영합니다.

바로가기


공용 알림 메세지 만들기(vuex)

모든 페이지에 있는 알림 메세지 처리를 한 곳에서 해봅니다.

바로가기


HTTP 예외처리 제대로 하기

임의로 만든 응답(모든 상태 200)이 아닌 HTTP 공식 에러코드를 사용해 상태(400, 401, 404등)와 함께 응답하게 만듭니다.

바로가기


반응형 게시판 만들기

모바일, 태블릿, 데스크탑등의 다양한 장에서 적절하게 표현되게 변경합니다.

바로가기


구글 리캡챠로 로봇 막아보기(recaptcha)

로봇(매크로)를 이용해 무한 게시물, 혹은 회원가입을 하는 요청을 막아봅니다.

바로가기


사용해보기

테스트용 코드를 실제 서버에 포팅해봤습니다.

https://fkkmemi.com


소스

공개소스 입니다. 맘껏 쓰셔도 상관 없지만 학습을 위해서라면 각 커밋 부분을 참고하시기 바랍니다.

소스 확인


영상

영상은 게시된 강좌의 글을 위한 참고용으로 보시면 됩니다.

실제 코드에 대한 검증용입니다.


사용 화면


고급편 재생목록


전체 강좌 재생목록


마치며

전혀 고급스럽지 않은 고급편이 끝났습니다.

고급편은 고급져서 고급편이 아닌.. 활용편 전 과정이라 이름 지어 본 것입니다.

이제 활용편에서는 코드를 서버에 올려두고 하다 둘씩 기능을 추가 할 것입니다.

서버에 올라갔다는 얘기는 모든 포트(80, 443)가 개방되어 공격의 대상이 되기도 한 것입니다.

완벽하지는 않지만 리캡챠나 토큰등으로 방어하며 서버에 올려볼 수준은 된 것입니다.

매주 2,3개씩 강좌를 진행하는데 그때 그때 따라오시기 보다는 이렇게 큰 챕터 끝나면 술술 따라오시는 것이 학습에 도움이 될 것 같습니다.

출처 : https://fkkmemi.github.io/nemv/nemv-078-adv-finish/
memi 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [21]
리차드
IP 220.♡.182.193
11-26 2018-11-26 15:00:45
·
좋은정보 감사합니다.
호오오잇
IP 27.♡.242.76
11-26 2018-11-26 15:22:21
·
감사합니다. 잘보고있습니다.
덱센
IP 61.♡.225.30
11-26 2018-11-26 15:42:16
·
아주 좋은 내용이네요. 참고하겠습니다. 감사합니다
Ceco
IP 175.♡.33.18
11-26 2018-11-26 19:04:42
·
감사합니다.
솔깃솔깃
IP 121.♡.178.200
11-26 2018-11-26 20:03:49
·
확실히 최근엔 뷰가 대세군요! 회사 프로젝트 때 리액트와 고민중이었는데 좀 더 기울었습니다
memi
IP 211.♡.246.251
11-27 2018-11-27 09:05:34
·
저도 리액트 점유율이 압도적이라 살짝 검토하다가 다시 뷰 성장새 보고 하던거나 잘하려는 중입니다~
alfmr
IP 60.♡.152.163
11-27 2018-11-27 05:16:58
·
감사합니다
맥모닝불여일견
IP 211.♡.55.156
11-27 2018-11-27 12:05:28
·
express router와 vue router 같이 쓰는부분 정말 도움 많이 됬습니다.
감사합니다.

kwatch
IP 221.♡.225.229
11-27 2018-11-27 13:02:57
·
하나 여쭤봐도 될까요 token 로그인을 사용할경우 ..
창을 띄워놓고 .. 기한이 만료 됐을 경우 무조건 로그인을 새로 해야 하는건가요?

만료를 3분으로 해놓고 ... 3분동안 아무것도 안하면 만료가 될텐데
그 이후는 무조건 로그인을 새로 해야 하는지요?
memi
IP 211.♡.246.251
11-27 2018-11-27 13:23:18
·
우선 강좌에서 토큰 관리는 정석은 아닙니다~
저는 은행권 사이트 들어가면 10분에서 가감하고 로그아웃 되는 것을 떠올리고 만들어 본것입니다..
사실상 공공장소에서 정말 위험할 수도 있고요.
그래서 로그인할 때 기억하기(체크박스)를 누르면 거의 무제한 급으로 사용하게 해놓은 것이고요.
기억하기 없이 3분 기한이 너무 짧다면 config/index.js 에서 조금 길게 넣으시면됩니다.
경험상 토큰이 경과후에는 아예 풀어지지도 않아서 주의해야합니다.
그밖에 다른 로직은 응용해서 사용해볼 수 있습니다.
우선 공공장소라고 생각하고.. 생각해보면
긴 만료의 토큰을 주고
클라이언트의 토큰이 오래되었는지 판단하고 브라우징 시작시 파괴한다던지,
브라우저 클로즈 이벤트 등에서 파괴한다던지~
월영
IP 14.♡.208.102
11-29 2018-11-29 14:26:52
·
보안에 발을 걸친 입장에서는 "만료"를 처음부터 길게 주는게 아니라 유저의 "행동" (action)에 따라 갱신 (re-new, 또는 extend) 하는 쪽을 권장합니다. 토큰이 오래되면 로그인 해서 다시 받는게 맞습니다.

따라서 일반적으로 설계시 유저가 어느정도의 세션을 유지하는게 만족스러운지 계산하는것도 보안 및 UX에 포함됩니다.
memi
IP 211.♡.246.251
11-30 2018-11-30 14:52:47
·
@월영님 의견 감사드립니다.
사용자 입장에서 편의를 가지면서(갱신이 된지 모르게) 로그인 유지되면서 안전하게 이용하려면..
뭔가 조금 복잡한 정책과 시나리오가 필요하다 생각은 하고 있습니다.
복잡한 정책이 강좌에서는 부담이 될 수도 있고.. 저도 아직 미숙한 부분이라.. 강좌에서는 이런식으로도 가능하다 정도의 설명입니다.
보안전문가 권장하시는 것을 봐서는 아무리 암호화 되어 있어도 토큰을 오래 가지고 있는 것은 좋은 일은 아닌 것 같습니다.

러덜
IP 61.♡.245.39
11-27 2018-11-27 13:26:05
·
이런 좋은 강좌 올려주셔서 너무너무 감사합니다!!
새한마리
IP 112.♡.175.178
11-27 2018-11-27 14:41:23
·
좋은 강좌 감사드립니다.
너구리냐
IP 175.♡.98.105
11-27 2018-11-27 22:04:54
·
감사합니다
다른남자
IP 125.♡.42.244
11-28 2018-11-28 00:19:21
·
좋은 강좌 정말 감사합니다.
새벽이슬
IP 1.♡.12.197
11-28 2018-11-28 11:33:45
·
정말 좋은 강좌 감사합니다~!!!!!
이런건 진짜 찾기도 힘들고 찾아도 영어의 압박이....ㄷㄷ
드림드림
IP 222.♡.157.42
11-29 2018-11-29 22:38:46
·
팁게에서 무료로 보기엔 너무 정돈된 practical 강좌에요!! udemy 에 올려보시는건 어떠세요
memi
IP 211.♡.246.251
11-30 2018-11-30 15:00:29
·
칭찬 감사합니다~
하지만 전 강좌로 돈 받을만큼 고수도 아니고.. 혹시라도 돈 벌어보려고 했다면 이미 다른 길을 선택했을것 같습니다.
강좌는 제 나름의 소확행이기도 하고 공익실현도 하고자 하는 마음에 진행중입니다.
강좌를 아무리 찾아봐도 인터넷에는 책 구매 유도나 인강 유도로 이어져서 답답해서 직접 만들고 있는 것입니다.
복잡하고 고급스러운 코드 해설이 아닌 최대한 한글로 표현하고 원리와 구현에 목적을 둬서 누구나 접근할 수 있게 만들고 싶은 마음입니다.(하다보면 의도치 않게 어려워지기도 하지만..)
삭제 되었습니다.
우브우브
IP 116.♡.33.155
12-25 2018-12-25 00:41:59
·
정말 좋은 강좌네요~~ 보고 많이 배워보겠습니다.
아리아리션
IP 122.♡.210.134
01-16 2019-01-16 07:04:19
·
감사합니다! 정독중입니다
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.