Backend/JavaScript,NodeJS, Express 35

token 생성한 뒤, 로그인 된 상태 판단하기

Main 페이지 토큰 값이 로그인 되어있는 지를 확인 1. req.header.token에 들어온 token 2. 토큰이 헤더에 있고, jwt.verify으로 token 확인, 유효기간, 형식확인 후 3. req.decoded에 token값을 넣어준다. 그럼 이제 main을 실행하려고 하는데, 받아햐하는 정보가 토큰이다. 어떻게 실행을 해보지? jwt 데이터를 어떻게 줘야하는거지 Sign Up 회원가입은 토큰 사용 X, 데베에 저장만 Sign In 토큰 생성 Refresh

간단한 회원가입 쿼리짜기

의문점 : 여러 정보들 입력 값 중, null이 존재하면 db 저장에 오류가 생기나? 답 : No, 있는 값만 들어간다. 1. Postman에서 입력 받기 : 사용자가 회원가입 시, 입력한 값을 받는다 : User DB의 모든 값을 입력 받을 수 있으나, 입력 없는 값은 null로 들어간다. 2. 예외처리 : 입력 중, 이메일 중복이 있으면 INSERT 안한다 "존재하는 이메일입니다" 3. 입력 값 DB에 넣어주기 router.post('/data', async (req, res) => { const getUser = "SELECT * FROM user WHERE email=?"; const getResult = await db.queryParam_Parse(getUser, req.body.email);..

서버 인증이 뭘까 그리고 인증방식은? (JWT)

인증, 왜 필요한가? 서버관점에서는 모든 API요청에 대해 사용자를 확인해야 한다. 예시로, 좋아요를 누가 눌렀는지를 서버는 누구인지를 파악해야 한다. 그렇지 못한다면, 정보전달이 엉망진창이 되버린다. 이로써 인증과정을 통해 요청에 맞는 데이터를 뿌려준다. *HTTP 요청 HTTP통신 : 앱, 웹에서 가장 많이 쓰이는 통신 방식 HTTP통신은 응답 후 연결을 끊기게 되며 과거 정보를 담지 않는다. 즉 항상 누가 보내는 요청임을 알려줘야 한다. 서버에 요청을 보내는 작업은 HTTP메세지를 보내는 것이다. HTTP 메세지 구조 : [ 헤더 + 공백 + 바디 ]에 따라, 헤더에 요청에 대한 정보가 들어가고, 바디에 서버로 보내야 할 데이터가 들어간다. 토큰 기반 인증 방식 (JWT) 토큰을 만들어서 HTTP ..

JWT(json web token) 다뤄보기

1. JWT 구조 Header . Payload . Signature (1) Header 두가지 요소로 구성된다. token의 type과 서명에 사용된 알고리즘이 들어간다. (3번 서명값에 사용될 알고리즘이 들어간다) 이 JSON 은 base64로 인코딩되어 첫번째 파트에 들어가게 된다. (2) Payload 토큰에 담을 클레임(Claims)을 포함한다. 여러 클레임 포함가능 클레임 : Payload에 담는 정보의 한 조각, 객체나 추가적인 데이터를 표현한다. 클레임 형태 : name - value 한 쌍으로 구성 3가지의 유형으로 나뉜다. 1. 등록된 클레임 (registered claims) 권장하고 있는 클레임 iss (issuer 토큰 발행자) exp (expriation time 토큰 만료시간)..

REST API - 좋아요 기능, 글 목록 구분짓기

1. 좋아요 기능 구현하기 좋아요 상태 판단하기 -코드분석 router.get('/search/:boardIdx/:user_id',async(req,res)=>{ console.log(req.params); console.log(req.params.boardIdx); console.log(req.body.title); const getBoard = "SELECT * FROM board where boardIdx = ?"; const getBoardResult = await db.queryParam_Parse(getBoard,req.params.boardIdx); const getLikelist = "SELECT * FROM likelist where boardIdx = ? AND user_id = ?";..

Router 실습하기 (Postman, MYSQL)

1. index.js var express = require('express'); var router = express.Router(); /* GET home page. */ router.use('/board', require('./board.js')); router.use('/find', require('./find.js')); router.use('/join', require('./join.js')); module.exports = router; router 폴더 안의 index.js에서 내가 쓰려고 하는 /find 페이지 주소를 넣어준다. 2. find.js //email 찾기 //이름값 불러오기 router.post('/email', async (req, res) => { console.log(r..

[생활코딩] Database, MYSQL 정리

데이터베이스 중요핵심 CRUD Create Read Update Delete 데이터베이스 종류 - 관계형 SQL (MYSQL) - 비관계형 noSQL 데이터베이스의 목적 스프레드시트처럼 데이터를 조작하는 반면 컴퓨터언어SQL를 이용해서 데이터를 조작하는 것이다. MYSQL의 구조 *schema : 표들의 그룹, 데이터베이스라고도 한다 *데이터베이스서버 : schema의 그룹, 데이터베이스그룹 *사용자 권한: 사용자별로 데이터관리권한 달리 할 수 있다. -root : 데이터 기능 모두 사용가능 실습 중, mysql root 비밀번호 오류났다;; 결국 구글링하다가 다시 깐다. 구글링방법대로 해도 안됨;; MySQL 접속 에러 / ERROR 2003 (HY000): Can't connect to MySQL s..

Express 와 MySQL 연동하기

1. 터미널 MySQL 명령어 실행오류 C:\Users\98092\myproject5\myapp>mysql 'mysql' is not recognized as an internal or external command, operable program or batch file. 2. 환경변수 설정 환경변수 Path에 MySQL 설치 경로를 추가한 뒤에 터미널 실행된다. [Windows] cmd 에서 mysql 접속하기 cmd 창에서 mysql에 바로 접속하려고 시도하면 mysql이 올바른 명령어가 아니라고 나온다. 이는 환경변수 설정을 해주지 않아서 윈도우가 명령어로 인식하지 못해서이다. 내컴퓨터 > 속성 > 고급 시 jintrue.tistory.com 3. mysql로 데이터베이스 및 테이블 삽입 들어온 ..

Express 설치 및 구동, MYSQL 연동하기

0. 컴퓨터 프로그램 설치 사용자명이 한글이라서 , 포맷을 했다. 0. anaconda 설치 (Python) 1. mysql installer 설치 ( root 계정 비밀번호 설정) 2. postman 설치 3. visual studio 설치 4. node js 설치 1. 로컬폴더 생성 2. Express 설치 및 구동 기억을 되짚어 하다가 안돼서 , 구글링했는데 실패 node 재설치,, 공식홈페이지 방식으로 성공 이걸로 그대로 따라하기 Express 설치 설치 Node.js가 이미 설치되었다고 가정한 상태에서, 애플리케이션을 보관할 디렉토리를 작성하고 그 디렉토리를 작업 디렉토리로 설정하십시오. $ mkdir myapp $ cd myapp npm init 명령을 이용하여 애플 expressjs.com ..