본문 바로가기
728x90

프로그래밍70

IM-SPRINT-AUTH-TOKEN, JWT를 이용한 프로그램 구현. (client-token) IM-SPRINT-AUTH-TOKEN, JWT를 이용한 프로그램 구현. (server-token) 스프린트를 진행하다보니 전체적인 구성을 이해하기 어려워서 한 줄 한 줄 정리해봄. 💡 server.token/index.js // 환경 변수 사용하기, import dotenv from dotenv require("dotenv").config(); // fs 모듈은 파.. study-with-ej.tistory.com server 를 완료하고 넘어 온 클라이언트 부분. 💡 client-token/src/component/Login.js * Axios를 이용하여 구현. Axios란? (깊게 이해하고 싶다면 첨부된 링크 참고 -> https://axios-http.com/kr/docs/intro) Axios는 .. 2022. 6. 8.
OAuth 2.0이란? OAuth는 언제 왜 사용할까? 🌈 OAuth 2.0 웹이나 앱에서 흔히 찾아볼 수 있는 소셜로그인 인증 방식은 OAuth 2라는 기술을 바탕으로 구현된다. 전통적으로 직접 작성한 서버에서 인증을 처리해주는 것과는 달리 OAuth는 인증을 중개해주는 메커니즘이다. 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다. 이미 사용자 정보를 가지고 있는 웹 서비스(Github, google, facebook and etc) 에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해진다. OAuth란 인증을 위한 표준 프로토콜이며, 보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공한하는 프로세스를 단순화하는 프로토콜 중 한 방법이다. 🌈.. 2022. 6. 8.
IM-SPRINT-AUTH-TOKEN, JWT를 이용한 프로그램 구현. (server-token) 스프린트를 진행하다보니 전체적인 구성을 이해하기 어려워서 한 줄 한 줄 정리해봄. 💡 server.token/index.js // 환경 변수 사용하기, import dotenv from dotenv require("dotenv").config(); // fs 모듈은 파일 시스템에 접근하는 모듈이다. 파일을 생성하거나 삭제하고 읽거나 쓸 수 있다. const fs = require("fs"); // https 모듈 사용 const https = require("https"); // cors 모듈 사용 const cors = require("cors"); // 요청된 쿠키를 쉽게 추출할 수 있도록 도와주는 미들웨어인 cookie-parser 사용 const cookieParser = require("cook.. 2022. 6. 8.
mkcert라는 프로그램을 이용하여 로컬 환경에서 신뢰할 수 있는 인증서 만들어보기 - macOS 💡Homebrew를 통해 mkcert 설치 $ brew install mkcert // firefox를 사용할 경우 필요에 따라 설치 $ brew install nss 💡 인증서 생성 // 다음 명령어를 통해 로컬을 인증된 발급기관으로 추가 mkcert -install // 로컬 환경에 대한 인증서를 만들어야 함. localhost로 대표되는 로컬 환경에 대한 인증서를 만들려면 다음 명령어를 입력해야 한다. mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1 2022. 6. 8.
토큰 기반 인증(Token-based Authentication) 그리고 JWT (Json Web Token) 🌈 토큰 기반 인증 (Token-based Authentication) 세션 기반 인증은 서버 혹은 DB에 유저 정보를 담는 인증방식이었다. 하지만 이러한 세션 방식을 사용하면 매 요청마다 데이터베이스를 살펴봐야하기 때문에 불편하다. 이러한 부담을 덜어내기 위해 토큰기반인증방식을 사용할 수 있다. 이러한 토큰기반 인증 중 JWT(Json Web Token)이 대표적이다. 💡JWT의 종류 : Access token은 보호된 정보들에 접근할 수 있는 권한부여에 사용된다. 클라이언트가 처음 인증을 받게 될 때, access, refresh token 두 가지를 다 받지만, 실제로 권한을 얻는 데 사용하는 토큰은 access token 이다. access token은 비교적 짧은 유효기간을 주기 때문에, 탈취되.. 2022. 6. 8.
im-sprint-learn-sql로 배워가는 SQL 기본 지식들, SQL 예제 실습 🌈 SQL 사용해보기! PART-3 Q 3-1. 현재 있는 데이터베이스에 존재하는 모든 테이블 정보를 보기위한 SQL을 작성해주세요. const PART3_1 = `SHOW TABLE STATUS;`; Q 3-2. user 테이블의 구조를 보기위한 SQL을 작성해주세요. const PART3_2 = `DESC user`; Q 3-3. content 테이블의 구조를 보기위한 SQL을 작성해주세요. const PART3_2 = `DESC content`; PART-4 Q 4-1. user 테이블에 존재하는 모든 컬럼을 포함한 모든 데이터를 확인하기 위한 SQL을 작성해주세요. const PART4_1 = `SELECT * FROM user`; Q 4-2. user 테이블에 존재하는 모든 데이터에서 name .. 2022. 6. 2.
비쥬얼스튜디오로 SQL 연결하기 🌈 Visaul Studio 로 SQL 연결하기 참고 사이트 - > https://www.w3schools.com/nodejs/nodejs_mysql.asp const dotenv = require('dotenv'); const mysql = require('mysql'); var con = mysql.createConnection({ host: 'localhost', user: 'root', password: '' }); con.connect(function (err) { if (err) throw err; console.log('Connected!'); }); 비밀번호가 셋팅되어 있지 않다면 공백으로 두는 것도 가능. 정상적으로 SQL 연결이 완료되었다면 해당 파일 실행시 연결됐다는 메시지가 출력되는.. 2022. 6. 2.
[데이터베이스] 트랜잭션 그리고 ACID (Atomicity, Consistency, Isolation, Durability) 🌈 트랜잭션 & ACID 💡 트랜잭션 ( Transacton ) 트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛. 각 트랜잭션은 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업들을 완료해야 정상적으로 종료한다. 만약 하나의 트랜잭션에 속해 있는 여러 작업 중에서 단 하나의 작업이라도 실패하면, 이 트랜잭션에 속한 모든 작업을 실패한 것으로 판단한다. 다시 말해 작업이 하나라도 실패하면 트랜잭션도 실패이고, 모든 작업이 성공적이면 트랜잭션 또한 성공이다. 성공 또는 실패라는 두 개의 결과만 존재하는 트랜잭션은 미완료된 작업 없이 모든 작업을 성공해야 한다. 💡 ACID ( Atomicity, Consistency, Isolation, Durability ) : ACID는 데이터베이스 내에서 일어.. 2022. 5. 30.
임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 깊이 우선 탐색(DFS, Depth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해.. treeDFS 문제 임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 깊이 우선 탐색(DFS, Depth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다. 입력 인자 1 : node 'value', 'children' 속성을 갖는 객체 (Node) 'node.value'는 number 타입 'node.children'은 Node를 요소로 갖는 배열 출력 배열을 리턴해야 합니다. 주의사항 생성자 함수(Node)와 메소드(addChild)는 변경하지 않아야 합니다. 입출력 예시 let root = new Node(1); let rootChild1 = root.addChild(new Node(2)); let ro.. 2022. 5. 30.
728x90