데브코스

데브코스

[6주차 복습 발표] JWT를 이용한 인증 및 인가

인증과 인가 인증(Authentication) 인증은 사용자를 식별하는 행위를 말한다. 쇼핑몰 사이트에서 마이페이지에 들어가려고 해보자. 마이페이지에 들어가려면 내가 이 사이트에 가입되어 있다는 증명이 필요하고, 그 증명 방법이 로그인이다. 웹 개발에서의 인증은 보통 사용자의 신원을 증명하는, 즉 로그인이라고 생각하면 된다. 인가(Authorization) 인가는 접근 권한을 확인하는 프로세스를 말한다. 같은 쇼핑몰 사이트에서 관리자인지 고객인지에 따라 접근할 수 있는 페이지가 다르다고 가정해보자. 관리자든 고객이든 일단 이 사이트에 가입된 사용자라는 것을 증명(인증)해야 하고, 그 후에 이 사용자가 이 페이지에 접근할 수 있는 권한이 있는가(인가)에 대해 판단한다. 결론적으로 인가는 인증 이후에 발생하..

데브코스

[6주차 - DAY4] cookie, jwt 설정

JWT 설정 유효 기간과 발행자 설정 토큰을 발행하는 sign 메서드의 마지막 인자에는 토큰의 설정을 적는다. 토큰의 유효 기간은 expiresIn이며, 초 단위의 숫자 또는 기간을 나타내는 문자열이어야 한다. 문자열로 작성할 때는 '1d', '1h', '30m'과 같이 작성하면 된다. issuer은 토큰의 발행자를 적는다. const token = jwt.sign({ email: loginUser.email, name: loginUser.name }, process.env.PRIVATE_KEY, { expiresIn: '30m', issuer: 'ncherryu' }); 아래 사진은 발행한 토큰을 복호화한 결과다. Payload에서 exp는 토큰의 유효 기간, iss는 토큰의 발행자를 의미한다. coo..

데브코스

[6주차 - DAY3] JWT를 이용한 인증 및 인가

next() next() 메서드는 다음 할 일을 하러 가라고 명령하는 기능을 한다. 여기서 다음 할 일이라는 것은 미들웨어나 콜백 함수 같은 것들을 말한다. 아래 코드는 유효성 검사를 위해 추가할 미들웨어이다. const validate = (req, res, next) => { const err = validationResult(req); if (err.isEmpty()) { return next(); } else { return res.status(400).json(err.array()); } } 만약 if문안에 return next()를 적지 않았다고 해보자. validate 미들웨어를 실행한 후 다음 할 일이 있다고 말해주지 않은 것과 같기 때문에 콜백 함수를 실행하지 않게 되고, 결과적으로 콜백..

데브코스

[6주차 - DAY2] 유효성 검사

유효성 검사 사용자가 입력한 값이 유효한 값인지 확인하는 일이다. 예를 들자면 비밀번호가 몇 자리 이상, 연락처에는 문자가 입력될 수 없다 등의 검사를 하는 것이다. Express 유효성 검사 모듈 설치 우리가 유효성 검사를 하는 모듈을 만들어서 쓸 수도 있지만 Express의 유효성 검사를 해주는 외부 모듈이 있기 때문에 이것을 사용해 보자. 터미널에서 아래 명령어를 입력하여 유효성 검사를 위한 외부 모듈을 설치해 준다. npm i express-validator 모듈 불러오기 body와 param은 각각 request의 body, param을 의미하고, validationResult는 오류를 받아주는 기능을 한다. const { body, param, validationResult } = requir..

데브코스

[6주차 - DAY1] RESTful API 개발 실습

DB 모듈화 users.js와 channels.js 두 파일에서 DB에 접근할 수 있어야 하므로 중복된 코드를 줄이기 위해 DB를 모듈화 한다. const mysql = require('mysql2'); const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'Youtube', password: 'root', dateStrings: true }); module.exports = connection; 사용자 개별 조회 이메일로 사용자를 조회한다. 쿼리에 변수를 적는 정석적인 방법은 물음표를 사용하는 것이다. 변수가 들어가야 할 부분에 물음표를 쓰고, query 메서드의 두 번째 파라미터로 해당하는 물음표에 ..

데브코스

[5주차 - DAY5] Workbench 사용 및 DB 연동

DB 커넥션 생성 아래 화면에서 플러스 버튼을 누른다. Connection Name을 입력하고 Test Connection 클릭해서 커넥션이 생성될 수 있는지 확인한다. 경고창은 무시하고 계속 진행하면 되고, OK 버튼을 누른다. Hostname이 기본적으로 127.0.0.1로 설정되어 있는데, 127.0.0.1로 하니까 에러가 나서 localhost로 해주었더니 정상적으로 잘 동작했다. 127.0.0.1로 해보고 안되면 localhost로 하면 된다. 스키마(데이터베이스) 생성 생성한 커넥션을 클릭해서 들어오면 아래와 같은 화면을 볼 수 있다. 왼쪽 SCHEMAS의 빈 공간을 우클릭해서 Create Schema를 클릭한다. Name에 원하는 스키마 이름을 입력하고, Apply 버튼을 누른다. 그러면 아..

데브코스

[5주차 복습 발표] DB 설계 및 실습

DBMS vs RDBMS DBMS 데이터베이스를 생성, 저장, 관리할 수 있는 기능들을 제공하는 시스템(프로그램)이다. RDBMS 데이터 간에 관계를 가지고 있는 DBMS이다. 데이터 간에 관계를 맺고 있기 때문에 찾고 싶은 데이터가 내가 지금 보고 있는 곳에 없더라도 거기에 있는 힌트를 사용해서 원하는 것을 찾아낼 수 있다. 데이터 중복·불일치를 최소화할 수 있고, 데이터의 보안, 일관성·무결성 유지의 장점이 있다. 비교 DBMS RDBMS 저장 형식 파일(계층적, 탐색 형식) 테이블(PK 식별자 사용) 정규화 여부 X O 데이터 보안 X O 적합한 데이터 처리 양 작음 큼 예시 파일시스템, XML MySQL, Oracle MySQL DATETIME vs TIMESTAMP 두 자료형 모두 날짜와 시간을..

데브코스

[5주차 - DAY4] DB 테이블 생성

MySQL(mariadb) 날짜/시간 자료형 type format DATE 날짜 YYYY-MM-DD DATETIME 날짜 + 시간 YYYY-MM-DD HH:MM:SS TIME 시간 HH:MM:SS TIMESTAMP 날짜 + 시간 YYYY-MM-DD HH:MM:SS DATETIME vs TIMESTAMP DATETIME과 TIMESTAMP의 가장 큰 차이점은 데이터 저장 방식이다. TIMESTAMP는 UTC(협정 세계시)로 저장한다. 우리나라는 협정 세계시보다 9시간 빠르다(UTC+9). 우리나라에서 오후 9시에 글을 작성하고, UTC 기준 국가 중 하나인 영국에서 그 게시물을 본다고 가정해 보자. DATETIME을 사용하면 오후 9시로 보이고, TIMESTAMP를 사용하면 오후 12시로 보인다. 따라서 ..

데브코스

[풀 사이클 개발 데브코스 회고] 3월 회고

배운 것 Git 전공생이지만 부끄럽게도 나는 깃을 전혀 할 줄 몰랐다. 깃을 써야 할 일이 있어서 잠깐 써본 적이 있었는데 그때는 뭣도 모르고 구글에 나오는 대로 따라 치기만 했다. 내가 만든 레포지토리도 아니어서 GUI로 접근도 못하고 에러는 자꾸 나는데 어떻게 해결해야 하는지도 모르고 절망만 했었다. 하지만 첫 주에 들었던 강사님의 좋은 강의 덕분에 그때 왜 그렇게 헤맸었는지, 깃을 사용하는 방법에 대해 전체적으로 알게 됐다. HTTP 모듈 휴학하고 유데미에서 웹 개발 강의를 들었었는데 그 강의는 express.js만 다뤘어서 이번에 http 모듈을 처음 써봤다. express에서는 코드 몇 줄로 만들 수 있던 기능이 http 모듈만 사용하니까 파일도 여러 개로 쪼개야 하고 응답과 요청을 처리하는 게..

데브코스

[5주차 - DAY3] Express.js 응용

DB DB(Database) 데이터의 집합을 데이터베이스라고 한다. 데이터를 구조화하여 관리하기 때문에 데이터 중복을 막을 수 있고, 효율적이고 빠른 데이터 연산을 가능하게 한다. DBMS(Database Management System) 데이터베이스를 생성, 저장, 관리할 수 있는 기능들을 제공하는 시스템(프로그램)이다. RDBMS(Reletional DBMS) 데이터 간에 관계를 가지고 있는 DBMS이다. 데이터 간에 관계를 맺고 있기 때문에 찾고 싶은 데이터가 내가 지금 보고 있는 곳에 없더라도 거기에 있는 힌트를 사용해서 원하는 것을 찾아낼 수 있다. 데이터 중복·불일치를 최소화할 수 있고, 데이터의 보안, 데이터의 일관성·무결성 유지의 장점이 있다. DBMS vs RDBMS DBMS RDBMS ..

미안하다 강림이 좀 늦었다
'데브코스' 카테고리의 글 목록 (9 Page)