본문 바로가기

Backend/Node js8

[Nodejs] 쿠키, 세션, jwt 로그인 로그인 기능을 구현할 때, 일반적으로 쿠키 혹은 세션을 기반으로 구현한다. 쿠키는 클라이언트 측에 저장되는 데이터로, 이것을 서버 측으로 전달하여 인증 및 상태 유지가 가능하다. 세션은 서버 측의 데이터로, 클라이언트 측에서 요청을 보내면 해당 요청을 기반으로 클라이언트의 정보를 기억하고, 일정 기간 이후 만료된다. 위의 두 가지 방식으로 로그인을 구현하는 경우, 각각의 문제점이 존재하는데 쿠키 방식을 사용하는 경우, 보안의 문제가 발생한다. 1. 쿠키 데이터 발생 주체는 클라이언트이며 식별이 가능한 관계로 다른 컴퓨터로 로그인 한 경우, 해당 컴퓨터의 다른 이용자가 로그인 정보 식별을 할 수 있으며 2. 쿠키 만료 기간이 길게 설정된 경우, 로그아웃을 하더라도 쿠키가 유지될 수 있다는 문제점이 있다. .. 2023. 5. 6.
[Node js] 서버와 DB 연결하기 (MongoDB) 서버는 클라이언트로부터 특정 페이지를 보여달라는 요청이(GET) 발생하는 경우 해당 페이지와 함께 전달되어야할 데이터를 전달해야 한다. 예를 들어, 마이 페이지를 보여주어야 할 때, 페이지 구성을 담당하는 데이터 (HTML, CSS ,JS) 뿐만 아니라, 로그인한 사용자의 데이터를 전달 해주어야 한다. 이런 데이터들을 저장, 출력, 수정, 삭제를 위해 웹 서버와 DB를 연결한다. DB는 다양한 제품이 있으나, 여기에서는 mongo db를 이용하여 연결할 것이고, node js 라이브러리 중 mongodb와 통신이 가능한 라이브러리인 mongoose 를 사용한다. // 위치 : 프로젝트 폴더/schemas/index.js const mongoose = require("mongoose"); // mongod.. 2023. 4. 29.
[Nodejs] Express 프레임워크 시작하기 Node js 로 웹 사이트를 만들기 위해서는 프레임워크가 필요하다. 파이썬에 flask, Django 등이 있듯, Node js 에서 활용 가능한 프레임워크가 몇 가지 있는데 그 중 Express 프레임 워크를 사용하였다. 환경 구성을 하기 위해, 작업을 시작할 폴더를 생성한 후, 패키지 설치를 위해 아래와 같이 입력한다 npm init -y // -y는 옵션패키지 설치와 관리를 위해 위와 같이 입력하며, -y 옵션을 추가하면 생성을 위한 여러 질문들을 모두 yes 인 응답으로 스킵이 된다. 그 후 프레임워크 설치를 위해 아래와 같이 입력한다.npm install express설치 후, package.json 파일 중, "main"과 같은 이름을 하는 js 파일을 생성하자.  여기서는 main의 값이 .. 2023. 4. 22.
[Javascript] 배열의 조합 구하기 알고리즘 문제를 접하다 보면, 간혹 배열의 조합을 구한 후 추가 계산을 해야 하는 문제가 있다. 조합하는 원소의 개수가 2개라면 두번의 for 문으로 해결이 가능하지만, 3개 이상은 구현하는데 깔끔하지 않기도 하지만 배열 길이에 따라서 속도가 엄청나게 느려질 수 있기 때문에, 다른 방법을 사용해야 한다. Python의 경우, 조합과 관련된 내장 함수가 있어서 구하기 쉽지만 Javascript는 관련 함수가 없어서 직접 구현 해야 한다. // 배열에서 n개를 골라 조합하기 function combinations(arr, n){ const results = []; // 반환할 최종 함수 if (n === 1){ // 추가해야할 원소가 1개 남으면, 배열 내 모든 원소들 배열 형태로 반환 return arr... 2023. 4. 15.
[Javascript] 콜백 함수란 자바스크립트에서 콜백 함수란 '파라미터로 함수를 받는 함수'라고 할 수 있다. 일반적인 함수의 경우에는 파라미터로 자료를 받아, 계산 후 특정 값을 반환하는데, 콜백 함수는 특정 값이 아닌 함수를 반환한다. for문에서 자주 사용되는 forEach가 그것이고, 다른 예로는 setTimeout이 있다. // 콜 백 함수 예제 1. forEach, 배열을 순회하며 배열 값 출력 number_list = [1, 2, 3, 4, 5]; number_list.forEach(function(x) { console.log(x); } ) // 예제 2. setTimeout, 3초 뒤 문자열 출력 setTimeout(function(){ console.log("Hi, everybody!"); }, 3000); A 데이터.. 2023. 4. 13.
[Javascript] Class와 Instance, 그리고 get & set 클래스란, 어떤 객체를 빠르게 생성해내기 위한 틀과 같은 것이다. 특정한 모양의 빵을 만들거나, 어떤 모양의 그릇을 대량으로 만든다고 하면 일반적으로 하나 만들 때 마다 하나 씩 손으로 만들어 내는 것 보다 틀을 만들어서 재료를 넣는 것이 더 빠르게 만들 수 있다. 위의 예시에서 클래스(Class)는 어떤 모양의 틀을 의미하고, 인스턴스(Instance)는 틀에 적용되어 생성된 객체를 의미한다. 자바스크립트에서 클래스를 만들기 위해서는 Class + 클래스 이름으로, 아래와 같이 선언해주면 된다. Class Person { // 여기에 내용이 들어갑니다. } 클래스를 만들기 위해서 반드시 포함되어야 하는 요소가 있는데, 그것은 바로 생성자 함수다. 생성자 함수는 객체 생성의 필수 구성 요소를 규정하는 역.. 2023. 4. 12.