node.js Atom에서 sass를 사용하고 싶었기 때문에 그 방법을 정리했습니다. 이전에는 could9에서 sass를 사용하고 있었지만, 언제나 사용하고 있는 에디터의 atom에 도입하려고 생각했기 때문에. 배포에는 "nodo.js"와 "node-sass"의 설치가 필요합니다. Atom에는 패키지로 "sass-autocompile"가 있으므로 그 설치까지 정리해 갑니다. 공식 사이트 : 공식 사이트에서 설치합니다. 터미널에서 node-v를 치고 설치되어 있는지 확인.npm... Sassnode.jsATOMnode-sass Express + AWS S3 이미지 업로드하기 웹 사이트 및 모바일 애플리케이션 등에서 원하는 양의 데이터를 저장하고 보호할 수 있다. 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다. AWS S3 에 저장된 객체에 대한 컨테이너 버킷에 저장할 수 있는 객체 수에는 제한이 없다 S3 에 저장되는 기본 객체 객체는 키(이름), 버전 ID 를 통해 식별된다. 웹 서비스 엔드포인트, 버킷 이름, 키, 버전의 조... S3awsnode.jsexpressS3 Node.js | npm 사용법과 bundler를 이용해 build 하기 (feat. -D flag) ⇒ JS 한가지 언어로 전체 웹 페이지를 만들 수 있게 된 것!! 서버 실행뿐만 아니라 다양한 자바스크립트 애플리케이션을 실행할 수 있다 (babel, sass,ejs등) Node Package Manager의 약자로 누군가 올려둔 패키지(모듈, 기능)를 다운 받아서 사용할 수 있다. npm을 통해서 다양한 모듈을 다운받아 node 환경에서 일종의 확장프로그램을 사용할 수 있는 것이죠. 모듈... 강의노트jsnode.jsjs Nodejs에 hset, hmset 데이터 저장하기 redis 모듈 사용시 다음 3가지 방식으로 Hash 타입 데이터를 넣을 수 있다. 키값과 필드 값으로 불러오는 방법 편의를 위해 변수명은 간단한걸 사용... node.jsredisnode.js [Nest.js]1. 환경설정, CRUD API 작성하기 NestJS에서는 nest generate 명령어를 통해 다양한 템플릿을 생성해주는 기능을 제공하는데, 그중 resource 옵션을 사용하면 CRUD API 작성에 필요한 기본 템플릿을 만들어준다. 명령어를 입력하면 어느 템플릿을 만들지 선택할 수 있는데, GraphQL API를 작성할 것이기 때문에 GraphQL(code first) 를 선택하도록 한다. nest generate 명령어를 ... graphqlnode.jsnest.jsgraphql 비트 컴퓨터 [Node.js] - ③ [Back] app.js [Back] dbconnect_Module.js [Back] SwToolsMapper.xml [Front] App.js [Front] App.css [Front] SoftwareList.js [Front] SortwareView.js package.json [Back] app.js [Back] dbconnect_Module.js [Back] SwToolsMapper.... node.js교육node.js [Node.js] 카카오 소셜 로그인 구현하기 실전 프로젝트를 진행하며 유저의 편의성을 위해 로그인/회원가입 방식을 카카오 소셜 로그인으로 구현하기로 했다. 소셜 로그인을 구현하기 위해서는 OAuth가 뭔지 알아두면 좋으니 OAuth가 뭔지 모르겠다면 글을 읽고 오자! 카카오 소셜 로그인 인증 방식 카카오 소셜로그인 뿐만 아니라 소셜 로그인들은 위와 같은 방식으로 진행된다. 카카오 서버는 자신이 클라이언트에게 발급해준 토큰과 서버로부터 ... passportJavaScriptnode.jsJavaScript Create Account #01 이번에는 계정을 생성하는 페이지를 만들어 보겠다. 그리고 여기에 인증(Authentication)도 추가해 볼거다. 유저가 로그인 하는걸 구현해 보면서 로그인이 어떤 의미를 가지고 있는지 알아 보겠다. 그리고 어떻게 로그인한 유저를 기억하게 만들 수 있는지도 알아 볼거다. GitHub로 로그인 하는것도 구현해 볼거다. 그러니까 이메일, 비밀번호로 로그인하는거랑 깃허브 로그인을 구현해 볼거다.... mongoosemongodbnode.jsschemaJavaScriptJavaScript Create Account #02 그리고 User모델도 만들어 봤다. 그리고 console에서 에러는 봤다.(현재는 안 생기는것 같다.) 업데이트 하라고 알려주는 거다. 그러면 새로운 버전을 쓰게 되고 경고가 나타나지 않게 된다. 이런 경고가 나타나면 그냥 진행해도 된다. 이제 userController 에서 유저 생성 하는걸 만들어 본다. 현재 지금은 join을 클릭하면 백엔드에 요청을 보내고 데이터를 console.log... mongoosemongodbJavaScriptnode.jsJavaScript Week3 회고 Express js의 package.json그리고 node_moduls 디렉토리에 대한 설명 HTTP Method(POST, GET, PUT, DELETE)를 통해 해당자원에 대한 CRUD Operation을 적용하는 것을 의한다. B. Express.js의 package.json파일, node_moduls 디렉토리 Express.js를 통해 간단한 웹개발을 해본 분들은 아시겠지만, pack... 해킹RESTfulAPI토큰쿠키node.jsRESTfulAPI Creating Account #03 절대 DB에 password를 저장하면 안된다. 어떤 회사든지 해킹 당하면 이런 식으로 DB에 password를 저장한걸 후회하게 된다. 그리고 보통 사람들은 같은 password를 여러 사이트에서 사용하기에 대부분의 사람들은 같은 password를 사용하기 때문이다. 만약 서비스에서 password를 관리하는 사람이라면 이런식으로 DB에 password를 저장하지 않으면 된다. 그래서 pa... hashmongoosemongodbnode.jssaltRoundsJavaScriptpre("save")bcryptHashingpasswordHashing Status Codes 그래서 status code(상태코드)라는걸 알 필요가 있다. 응답의 상태 코드가 200이라고 나와 있다. 위키피디아에서 상태 코드 200이 뭘 의미 하는지 응답으로 200을 받으면 구글 크롬이 계정 생성이 성공적이었다고 판단하는거다. 그래서 패스워드를 저장할거냐고 물어보는거다. 계정 생성이 성공적으로 됐다고 판단하면 패스워드를 저장 할거냐고 물어보는거다. 바로 상태 코드 200을 응답으로 ... mongoosemongodbnode.jsJavaScriptstatusJavaScript Login #01 이미 사용중인 username과 password가 일치 하는지 확인하고 있다. videoController에서 했던 것처럼 try~catch를 사용해서 에러를 방지 할수 있다. User를 만들때도 try~catch를 쓰고 있는거다. 이제 로그인 페이지를 만들어 보도록 한다. 로그인 하세요 ->" 까지 잘 나온다. 이제 login을 클릭하면 /login으로 넘어가게 된다. 순서를 바꿔 주고 r... mongoosemongodbJavaScriptnode.jsJavaScript Login #02 보다시피 이 모든걸 같이 구현하게 되면 정말 멋진 기능을 만들어 낼수 있다. 이런 것들을 다 쓰고 있다. DB를 보면 해싱된 패스워드가 있다. 그래서 DB에 있는 패스워드를 해석할 수 없다. 그런데 그 패스워드의 해시값을 알고 있다. 뭘 하면 되냐면 로그인할 때 유저가 입력한 패스워드를 가져다가 해싱을 하면 되는거다. 그러면 패스워드를 해싱하고 나온 해시값을 비교하면 되는거다. 그리고 만약 ... mongoosemongodbnode.jsJavaScriptComparebcryptCompare Sessions and Cookies #01 이 로그인 개념을 설명할 필요도 없을 거다. 그런데 이게 작동하려면 백엔드와 브라우저가 서로에 대한 정보를 가지고 있어야 한다. 이 둘 사이 연결에 state가 없는 거다. 그래서 유저한테 어떤 정보를 남겨줘야 한다. 그래서 유저가 로그인 할때마다 유저한테 뭔가 줘야 한다. 유저가 요청을 보낼때 마다 그 텍스트를 같이 보내달라고 하는 거다. 헷갈린다면 세션을 직접 써보고 이 텍스트가 뭔지에 ... mongoosecookiemongodbnode.jsSessionsJavaScriptJavaScript Sessions and Cookies #02 백엔드의 각 세션들은 id를 가지고 있었고 그 id를 브라우저한테 보냈다. 그러면 브라우저가 요청을 보낼때마다 그 id를 같이 보내준다. 백엔드에 요청을 보낼때 마다 id를 같이 보내줘야 한다. 그리고 세션 id를 가지고 있으면 세션 object에 정보를 추가 할수 있다. 다른 세션 id가 나오고 있다. 브라우저마다 서로 다른 세션 id를 가진 텍스트를 보내고 있다. 서버가 브라우저한테 세션... mongoosemongodbnode.jsSessionsJavaScriptcookiesJavaScript Logged In User #01 잠에 들고 다시 일어나더라도 핸드폰 번호을 기억하고 있는 것처럼 이걸 다 기억할 수는 없으니까 예를 들어, 누군가가 "너의 핸드폰 번호는 뭐니?" 라고 물어봤는데 누군지 모르겠다면 id카드를 받아서 "이게 너의 핸드폰 번호구나!" 라고 알수 있다. 그리고 잠에 들었다 다시 일어나서 핸드폰 번호가 뭐냐고 다시 물어보면 이제 여길 보면 세션 DB가 있는데 유저가 로그인하면 그 유저에 대한 정보를... mongoosemongodbnode.jssessionloggedInJavaScriptJavaScript Logged In User #02 새로고침을 하니까 에러가 있다. node를 보면 console.log된게 많이 있다. pug template에서 locals에 접근할수 있다. locals를 공유 할수 있도록 설정되어 있다. 모든 pug파일들은 locals object에 접근할수 있다. 모든 template에서 쓸수 있다. 보다시피 이 title은 바뀌지 않고 있다. 그리고 locals는 template의 모든 곳에 있다. ... mongoosemongodbnode.jssessionbooleanloggedInJavaScriptmiddlewareJavaScript Mongo Store 우선 Note 를 보면 session data 가 쿠키 안에 저장 되지 않는다고 적혀있다. session ID만 저장 된다고 되어 있다. session data는 서버쪽에 저장된다. session id는 쿠키에 저장하지만 데이터 자체는 그리고 다른 주의 사항으로 서버에 저장되는 default session storage는 그래서 session store를 사용해야 한다. 다양한 databas... mongoosemongodbnode.jssessionMongoStoreJavaScriptJavaScript Uninitialized Sessions 보이고 있는 쿠키를 지운다. 다시 쿠키를 지워 본다. 쿠키를 하나 받았고, DB에도 하나 더 생겼다. 이말은 방문하는 모든 사용자에 대해 쿠키를 만들어주고 세션을 만든다는 거다. 사용자에게 쿠키를 주고 session은 DB에 저장 하는거다. 해결책은 모든 방문자에 대해서 쿠키를 주지 않는 거다. 기억하고 싶은 사용자에 대해서만 쿠키를 주는 거다. 뭘 하든지간에 기억할 필요가 없기 때문에 쿠키... mongoosemongodbnode.jssessioninitializeJavaScriptUninitializedsecretJavaScript Expiration and Secrets Name,Value,Domain,Path,Expires / Max-Age가 있다. 그리고 Size,HttpOnly,Secure,SameSite,Priority등이 있다. 쿠키에 sign하는 이유는 백엔드가 쿠키를 줬다는걸 보여주기 위함이다. 왜냐하면 session hijack(납치)라는 공격유형이 있다. 이걸 잘 보호햐아 하는데 누군가 쿠키를 훔쳐서 마치 그 사람인척 할수 있다. 이 stri... MaxAgemongodbmongoosenode.js.envJavaScriptdomainsecret.env 백준 node.js 입력받기 1. 하나의 값을 입력받을 때 2. 공백으로 구분된 한 줄의 값들을 입력받을 때 3. 여러 줄의 값들을 입력받을 때 4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄에 공백으로 구분된 n개의 값들을 입력받을 때 5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때 6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽... node.jsnode.js Github Login #02 예를 들자면 여기 나와 있는 모든 scope을 보면 여기에서 admin scope을 가져 올수 있다. 이제 Personal user data라고 명시되어 있다. 그러면 이제 모든 Personal data에 접근 가능하다. 보다시피 전부 URL에 기반하고 있다. 그리고 이것들은 전부 URL에 공백으로 구분해서 쓰면 된다. 여기에 " 이 어플리케이션은 어떤 repository든 삭제 할수 있다"... mongoosemongodbnode.jsuser:emailscoperead:userJavaScriptgithubJavaScript Github Login #01 깃헙 로그인을 사용해보려고 한다. 하지만 다른 SNS랑 흐름은 비슷하다. 물론 구글 같은 곳은 더 많은 걸 요청 하게 될거다. 왜냐하면 구글은 더 많은 정ㅂ조를 가지고 있고, 많은 정보를 받아 올수 있기 때문이다. 그리고 그 흐름은 다음과 같다. 해야하는건 사용자를 깃헙으로 보내는거다. 그리고 정보를 공유하는 것을 승인하게 될거다. 그러면 깃헙은 사용자를 웹사이트로 돌려보낼거다. 그 단계가 ... mongoosemongodbnode.jsJavaScriptgithubJavaScript Node.js Redis 외부 접속하기 실제 구조는 ec2 express <-> lightsail이지만 빠른 외부 접속 테스트를 위해 mac express로 확인 CONFIG.REDIS.URL 값은 다음과 같다. redis모듈 사용법을 찾다보면 url이 아닌 host, port 옵션 연결이 있었는데, 이건 안됐음. npm redis 공식 문서를 봐도 url로 사용함 모든 ip 접속을 허용하는 것이므로 실제로는 어플리케이션 서버 i... node.jsredisnode.js 프로젝트 1 - Auth 우리가 특정 사이트를 간다고 했을 때 로그인이 된 유저들만 이용할 수 있고, 그런것을 체크해주기 위해서 Auth 기능을 만드는 것이다 현재 우리는 토큰이 서버의 user 정보에 저장되어있고, 쿠키 내에 토큰이 인코드 되어있는 상태인데 서버에서 받은 토큰을 디코드한다 지난 포스트에서 'secretToken'을 넣으면 user id가 나온다고 했었다 그럼 그 user id를 이용해서 그 user... Reactmongodb프로젝트 - 개인 공부node.jsReact 프로젝트 1 - 로그인 기능 DB에서 요청한 이메일 찾기 DB에서 요청한 이메일이 있다면 비밀번호가 같은지 확인하기 위 코드를 index.js에 작성하고 여기 안에 아래 3가지 코드를 각각 추가하면 된다 DB에서 찾기위해서 우선 유저 모델을 가져온다 그리고 해당하는 유저가 없다면 로그인이 실패했다고 JSON으로 리턴하자 그래서 bcrypt.compare 을 사용할 것이다 그러기 위해서 comparePassword라는 메... Reactmongodb프로젝트 - 개인 공부node.jsReact [Node.js/Koa] Koa 웹 프레임워크 Koa는 Express의 개발 팀이 만든 프레임워크입니다. Express와 비교했을 때, 작년기준으로 Koa는 2번째로 높은 다운로드 횟수를 기록했지만, 여전히 익스프레스에 비해서는 낮은 수치를 기록하고 있습니다. 물론 그렇다고 해서 Koa가 Express보다 나쁜 프레임워크라는 것은 아닙니다. Express는 자체에 미들웨어나, 템플릿, 라우팅 등이 내장되어있어 설치하고 추가적인 과정없이 ... node.jsKoaKoa
Atom에서 sass를 사용하고 싶었기 때문에 그 방법을 정리했습니다. 이전에는 could9에서 sass를 사용하고 있었지만, 언제나 사용하고 있는 에디터의 atom에 도입하려고 생각했기 때문에. 배포에는 "nodo.js"와 "node-sass"의 설치가 필요합니다. Atom에는 패키지로 "sass-autocompile"가 있으므로 그 설치까지 정리해 갑니다. 공식 사이트 : 공식 사이트에서 설치합니다. 터미널에서 node-v를 치고 설치되어 있는지 확인.npm... Sassnode.jsATOMnode-sass Express + AWS S3 이미지 업로드하기 웹 사이트 및 모바일 애플리케이션 등에서 원하는 양의 데이터를 저장하고 보호할 수 있다. 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다. AWS S3 에 저장된 객체에 대한 컨테이너 버킷에 저장할 수 있는 객체 수에는 제한이 없다 S3 에 저장되는 기본 객체 객체는 키(이름), 버전 ID 를 통해 식별된다. 웹 서비스 엔드포인트, 버킷 이름, 키, 버전의 조... S3awsnode.jsexpressS3 Node.js | npm 사용법과 bundler를 이용해 build 하기 (feat. -D flag) ⇒ JS 한가지 언어로 전체 웹 페이지를 만들 수 있게 된 것!! 서버 실행뿐만 아니라 다양한 자바스크립트 애플리케이션을 실행할 수 있다 (babel, sass,ejs등) Node Package Manager의 약자로 누군가 올려둔 패키지(모듈, 기능)를 다운 받아서 사용할 수 있다. npm을 통해서 다양한 모듈을 다운받아 node 환경에서 일종의 확장프로그램을 사용할 수 있는 것이죠. 모듈... 강의노트jsnode.jsjs Nodejs에 hset, hmset 데이터 저장하기 redis 모듈 사용시 다음 3가지 방식으로 Hash 타입 데이터를 넣을 수 있다. 키값과 필드 값으로 불러오는 방법 편의를 위해 변수명은 간단한걸 사용... node.jsredisnode.js [Nest.js]1. 환경설정, CRUD API 작성하기 NestJS에서는 nest generate 명령어를 통해 다양한 템플릿을 생성해주는 기능을 제공하는데, 그중 resource 옵션을 사용하면 CRUD API 작성에 필요한 기본 템플릿을 만들어준다. 명령어를 입력하면 어느 템플릿을 만들지 선택할 수 있는데, GraphQL API를 작성할 것이기 때문에 GraphQL(code first) 를 선택하도록 한다. nest generate 명령어를 ... graphqlnode.jsnest.jsgraphql 비트 컴퓨터 [Node.js] - ③ [Back] app.js [Back] dbconnect_Module.js [Back] SwToolsMapper.xml [Front] App.js [Front] App.css [Front] SoftwareList.js [Front] SortwareView.js package.json [Back] app.js [Back] dbconnect_Module.js [Back] SwToolsMapper.... node.js교육node.js [Node.js] 카카오 소셜 로그인 구현하기 실전 프로젝트를 진행하며 유저의 편의성을 위해 로그인/회원가입 방식을 카카오 소셜 로그인으로 구현하기로 했다. 소셜 로그인을 구현하기 위해서는 OAuth가 뭔지 알아두면 좋으니 OAuth가 뭔지 모르겠다면 글을 읽고 오자! 카카오 소셜 로그인 인증 방식 카카오 소셜로그인 뿐만 아니라 소셜 로그인들은 위와 같은 방식으로 진행된다. 카카오 서버는 자신이 클라이언트에게 발급해준 토큰과 서버로부터 ... passportJavaScriptnode.jsJavaScript Create Account #01 이번에는 계정을 생성하는 페이지를 만들어 보겠다. 그리고 여기에 인증(Authentication)도 추가해 볼거다. 유저가 로그인 하는걸 구현해 보면서 로그인이 어떤 의미를 가지고 있는지 알아 보겠다. 그리고 어떻게 로그인한 유저를 기억하게 만들 수 있는지도 알아 볼거다. GitHub로 로그인 하는것도 구현해 볼거다. 그러니까 이메일, 비밀번호로 로그인하는거랑 깃허브 로그인을 구현해 볼거다.... mongoosemongodbnode.jsschemaJavaScriptJavaScript Create Account #02 그리고 User모델도 만들어 봤다. 그리고 console에서 에러는 봤다.(현재는 안 생기는것 같다.) 업데이트 하라고 알려주는 거다. 그러면 새로운 버전을 쓰게 되고 경고가 나타나지 않게 된다. 이런 경고가 나타나면 그냥 진행해도 된다. 이제 userController 에서 유저 생성 하는걸 만들어 본다. 현재 지금은 join을 클릭하면 백엔드에 요청을 보내고 데이터를 console.log... mongoosemongodbJavaScriptnode.jsJavaScript Week3 회고 Express js의 package.json그리고 node_moduls 디렉토리에 대한 설명 HTTP Method(POST, GET, PUT, DELETE)를 통해 해당자원에 대한 CRUD Operation을 적용하는 것을 의한다. B. Express.js의 package.json파일, node_moduls 디렉토리 Express.js를 통해 간단한 웹개발을 해본 분들은 아시겠지만, pack... 해킹RESTfulAPI토큰쿠키node.jsRESTfulAPI Creating Account #03 절대 DB에 password를 저장하면 안된다. 어떤 회사든지 해킹 당하면 이런 식으로 DB에 password를 저장한걸 후회하게 된다. 그리고 보통 사람들은 같은 password를 여러 사이트에서 사용하기에 대부분의 사람들은 같은 password를 사용하기 때문이다. 만약 서비스에서 password를 관리하는 사람이라면 이런식으로 DB에 password를 저장하지 않으면 된다. 그래서 pa... hashmongoosemongodbnode.jssaltRoundsJavaScriptpre("save")bcryptHashingpasswordHashing Status Codes 그래서 status code(상태코드)라는걸 알 필요가 있다. 응답의 상태 코드가 200이라고 나와 있다. 위키피디아에서 상태 코드 200이 뭘 의미 하는지 응답으로 200을 받으면 구글 크롬이 계정 생성이 성공적이었다고 판단하는거다. 그래서 패스워드를 저장할거냐고 물어보는거다. 계정 생성이 성공적으로 됐다고 판단하면 패스워드를 저장 할거냐고 물어보는거다. 바로 상태 코드 200을 응답으로 ... mongoosemongodbnode.jsJavaScriptstatusJavaScript Login #01 이미 사용중인 username과 password가 일치 하는지 확인하고 있다. videoController에서 했던 것처럼 try~catch를 사용해서 에러를 방지 할수 있다. User를 만들때도 try~catch를 쓰고 있는거다. 이제 로그인 페이지를 만들어 보도록 한다. 로그인 하세요 ->" 까지 잘 나온다. 이제 login을 클릭하면 /login으로 넘어가게 된다. 순서를 바꿔 주고 r... mongoosemongodbJavaScriptnode.jsJavaScript Login #02 보다시피 이 모든걸 같이 구현하게 되면 정말 멋진 기능을 만들어 낼수 있다. 이런 것들을 다 쓰고 있다. DB를 보면 해싱된 패스워드가 있다. 그래서 DB에 있는 패스워드를 해석할 수 없다. 그런데 그 패스워드의 해시값을 알고 있다. 뭘 하면 되냐면 로그인할 때 유저가 입력한 패스워드를 가져다가 해싱을 하면 되는거다. 그러면 패스워드를 해싱하고 나온 해시값을 비교하면 되는거다. 그리고 만약 ... mongoosemongodbnode.jsJavaScriptComparebcryptCompare Sessions and Cookies #01 이 로그인 개념을 설명할 필요도 없을 거다. 그런데 이게 작동하려면 백엔드와 브라우저가 서로에 대한 정보를 가지고 있어야 한다. 이 둘 사이 연결에 state가 없는 거다. 그래서 유저한테 어떤 정보를 남겨줘야 한다. 그래서 유저가 로그인 할때마다 유저한테 뭔가 줘야 한다. 유저가 요청을 보낼때 마다 그 텍스트를 같이 보내달라고 하는 거다. 헷갈린다면 세션을 직접 써보고 이 텍스트가 뭔지에 ... mongoosecookiemongodbnode.jsSessionsJavaScriptJavaScript Sessions and Cookies #02 백엔드의 각 세션들은 id를 가지고 있었고 그 id를 브라우저한테 보냈다. 그러면 브라우저가 요청을 보낼때마다 그 id를 같이 보내준다. 백엔드에 요청을 보낼때 마다 id를 같이 보내줘야 한다. 그리고 세션 id를 가지고 있으면 세션 object에 정보를 추가 할수 있다. 다른 세션 id가 나오고 있다. 브라우저마다 서로 다른 세션 id를 가진 텍스트를 보내고 있다. 서버가 브라우저한테 세션... mongoosemongodbnode.jsSessionsJavaScriptcookiesJavaScript Logged In User #01 잠에 들고 다시 일어나더라도 핸드폰 번호을 기억하고 있는 것처럼 이걸 다 기억할 수는 없으니까 예를 들어, 누군가가 "너의 핸드폰 번호는 뭐니?" 라고 물어봤는데 누군지 모르겠다면 id카드를 받아서 "이게 너의 핸드폰 번호구나!" 라고 알수 있다. 그리고 잠에 들었다 다시 일어나서 핸드폰 번호가 뭐냐고 다시 물어보면 이제 여길 보면 세션 DB가 있는데 유저가 로그인하면 그 유저에 대한 정보를... mongoosemongodbnode.jssessionloggedInJavaScriptJavaScript Logged In User #02 새로고침을 하니까 에러가 있다. node를 보면 console.log된게 많이 있다. pug template에서 locals에 접근할수 있다. locals를 공유 할수 있도록 설정되어 있다. 모든 pug파일들은 locals object에 접근할수 있다. 모든 template에서 쓸수 있다. 보다시피 이 title은 바뀌지 않고 있다. 그리고 locals는 template의 모든 곳에 있다. ... mongoosemongodbnode.jssessionbooleanloggedInJavaScriptmiddlewareJavaScript Mongo Store 우선 Note 를 보면 session data 가 쿠키 안에 저장 되지 않는다고 적혀있다. session ID만 저장 된다고 되어 있다. session data는 서버쪽에 저장된다. session id는 쿠키에 저장하지만 데이터 자체는 그리고 다른 주의 사항으로 서버에 저장되는 default session storage는 그래서 session store를 사용해야 한다. 다양한 databas... mongoosemongodbnode.jssessionMongoStoreJavaScriptJavaScript Uninitialized Sessions 보이고 있는 쿠키를 지운다. 다시 쿠키를 지워 본다. 쿠키를 하나 받았고, DB에도 하나 더 생겼다. 이말은 방문하는 모든 사용자에 대해 쿠키를 만들어주고 세션을 만든다는 거다. 사용자에게 쿠키를 주고 session은 DB에 저장 하는거다. 해결책은 모든 방문자에 대해서 쿠키를 주지 않는 거다. 기억하고 싶은 사용자에 대해서만 쿠키를 주는 거다. 뭘 하든지간에 기억할 필요가 없기 때문에 쿠키... mongoosemongodbnode.jssessioninitializeJavaScriptUninitializedsecretJavaScript Expiration and Secrets Name,Value,Domain,Path,Expires / Max-Age가 있다. 그리고 Size,HttpOnly,Secure,SameSite,Priority등이 있다. 쿠키에 sign하는 이유는 백엔드가 쿠키를 줬다는걸 보여주기 위함이다. 왜냐하면 session hijack(납치)라는 공격유형이 있다. 이걸 잘 보호햐아 하는데 누군가 쿠키를 훔쳐서 마치 그 사람인척 할수 있다. 이 stri... MaxAgemongodbmongoosenode.js.envJavaScriptdomainsecret.env 백준 node.js 입력받기 1. 하나의 값을 입력받을 때 2. 공백으로 구분된 한 줄의 값들을 입력받을 때 3. 여러 줄의 값들을 입력받을 때 4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄에 공백으로 구분된 n개의 값들을 입력받을 때 5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때 6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽... node.jsnode.js Github Login #02 예를 들자면 여기 나와 있는 모든 scope을 보면 여기에서 admin scope을 가져 올수 있다. 이제 Personal user data라고 명시되어 있다. 그러면 이제 모든 Personal data에 접근 가능하다. 보다시피 전부 URL에 기반하고 있다. 그리고 이것들은 전부 URL에 공백으로 구분해서 쓰면 된다. 여기에 " 이 어플리케이션은 어떤 repository든 삭제 할수 있다"... mongoosemongodbnode.jsuser:emailscoperead:userJavaScriptgithubJavaScript Github Login #01 깃헙 로그인을 사용해보려고 한다. 하지만 다른 SNS랑 흐름은 비슷하다. 물론 구글 같은 곳은 더 많은 걸 요청 하게 될거다. 왜냐하면 구글은 더 많은 정ㅂ조를 가지고 있고, 많은 정보를 받아 올수 있기 때문이다. 그리고 그 흐름은 다음과 같다. 해야하는건 사용자를 깃헙으로 보내는거다. 그리고 정보를 공유하는 것을 승인하게 될거다. 그러면 깃헙은 사용자를 웹사이트로 돌려보낼거다. 그 단계가 ... mongoosemongodbnode.jsJavaScriptgithubJavaScript Node.js Redis 외부 접속하기 실제 구조는 ec2 express <-> lightsail이지만 빠른 외부 접속 테스트를 위해 mac express로 확인 CONFIG.REDIS.URL 값은 다음과 같다. redis모듈 사용법을 찾다보면 url이 아닌 host, port 옵션 연결이 있었는데, 이건 안됐음. npm redis 공식 문서를 봐도 url로 사용함 모든 ip 접속을 허용하는 것이므로 실제로는 어플리케이션 서버 i... node.jsredisnode.js 프로젝트 1 - Auth 우리가 특정 사이트를 간다고 했을 때 로그인이 된 유저들만 이용할 수 있고, 그런것을 체크해주기 위해서 Auth 기능을 만드는 것이다 현재 우리는 토큰이 서버의 user 정보에 저장되어있고, 쿠키 내에 토큰이 인코드 되어있는 상태인데 서버에서 받은 토큰을 디코드한다 지난 포스트에서 'secretToken'을 넣으면 user id가 나온다고 했었다 그럼 그 user id를 이용해서 그 user... Reactmongodb프로젝트 - 개인 공부node.jsReact 프로젝트 1 - 로그인 기능 DB에서 요청한 이메일 찾기 DB에서 요청한 이메일이 있다면 비밀번호가 같은지 확인하기 위 코드를 index.js에 작성하고 여기 안에 아래 3가지 코드를 각각 추가하면 된다 DB에서 찾기위해서 우선 유저 모델을 가져온다 그리고 해당하는 유저가 없다면 로그인이 실패했다고 JSON으로 리턴하자 그래서 bcrypt.compare 을 사용할 것이다 그러기 위해서 comparePassword라는 메... Reactmongodb프로젝트 - 개인 공부node.jsReact [Node.js/Koa] Koa 웹 프레임워크 Koa는 Express의 개발 팀이 만든 프레임워크입니다. Express와 비교했을 때, 작년기준으로 Koa는 2번째로 높은 다운로드 횟수를 기록했지만, 여전히 익스프레스에 비해서는 낮은 수치를 기록하고 있습니다. 물론 그렇다고 해서 Koa가 Express보다 나쁜 프레임워크라는 것은 아닙니다. Express는 자체에 미들웨어나, 템플릿, 라우팅 등이 내장되어있어 설치하고 추가적인 과정없이 ... node.jsKoaKoa