목록

'node js' 122건

  • 카카오 로그인 구현하기 (1)
    프로그래밍 언어/NODE JS · 댓글
    카카오 로그인이란 로그인 인증 과정을 카카오에 맡기는 것을 뜻합니다. 사용자는 번거롭게 새로운 사이트에 회원가입하지 않아도 되므로 좋고, 서비스 제공자는 로그인 과정을 검증된 SNS에 안심하고 맡길 수 있어 좋습니다.SNS 로그인의 특징은 회원가입 절차가 따라 없다는 것입니다. 처음 로그인할 때는 회원가입 처리를 해야 하고, 두 번째 로그인부터는 로그인 처리를 해야 합니다. 따라서 SNS 로그인 전략은 로컬 로그인 전략보다 다소 복잡합니다.const passport = require("passport");const kakaoStrategy = require("passport-kakao").Strategy;const User = require("../models/user");module.exports = ..
  • 로컬 로그인 구현하기 (2)
    프로그래밍 언어/NODE JS · 댓글
    회원가입, 로그인, 로그아웃 라우터를 작성합니다.routes/auth.jsconst express = require("express");const passport = require("passport");const bcrypt = require("bcrypt");const { isLoggedIn, isNotLoggedIn } = require("./middlewares");const User = require("../models/user");const router = express.Router();router.post("/join", isNotLoggedIn, async (req, res, next) => { const { email, nick, password } = req.body; try { ..
  • 로컬 로그인 구현하기(1)
    프로그래밍 언어/NODE JS · 댓글
    로컬 로그인이란 다른 SNS 서비스를 통해 로그인하지 않고 자체적으로 회원가입 후 로그인하는 것을 의미합니다. 즉, 아이디/비밀번호 또는 이메일/비밀번호를 통해 로그인하는 것입니다.Passport에서 이를 구현하려면 passport-local 모듈이 필요합니다. 이미 설치했으므로 로컬 로그인 전략만 세우면 됩니다. 로그인에만 해당하는 전략이므로 회원가입은 따로 만들어야 합니다.routes/middlewares.jsexports.isLoggedId = (req, res, next) => { if (req.isAuthenticated()) { next(); } else { res.status(403).send("로그인 필요"); }};exports.isNotLoggedIn = (req, re..
  • Passport 모듈로 로그인 구현하기
    프로그래밍 언어/NODE JS · 댓글
    SNS 서비스이므로 회원가입과 로그인이 필요합니다. 회원가입과 로그인을 직접 구현할 수도 있지만, 세션과 쿠키 처리 등 복잡한 작업이 많으므로 검증된 모듈을 사용하는 것이 좋습니다. 바로 Passport를 사용하는 것입니다.이 모듈은 이름처럼 우리의 서비스를 사용할 수 있게 해주는 여권 같은 역할을 합니다.요즘에는 서비스에 로그인할 때 아이디와 비밀번호를 사용하지 않고 구글, 페이스북, 카카오톡 같은 기존의 SNS 서비스 계정으로 로그인하기도 합니다. 이 또한 Passport를 사용해서 해결할 수 있습니다. 먼저 Passport 관련 패키지들을 설치합니다.$ npm i passport passport-local passport-kakao bcrypt app.jsconst express = require(..
  • 데이터베이스 세팅하기 (3)
    프로그래밍 언어/NODE JS · 댓글
    이제 생성한 모델을 데이터베이스 및 서버와 연결합니다. 아직 데이터베이스를 만들지 않았으므로 데이터베이스로부터 만들겠습니다. 데이터베이스의 이름은 nodebird입니다.MySQL 프롬프트를 통해 SQL문을 데이터베이스를 만들었습니다. 하지만 시퀄라이즈는 config.jspm을 읽어 데이터베이스를 생성해주는 기능이 있습니다. 따라서 config.json을 먼저 수정합니다. MySQL 비밀번호를 password에 넣고 데이터베이스 이름을 nodebird러 바꿉니다. 자동 생성한 config.json에 operatorAliaxes 속성이 들어 있다면 삭제합니다.{ "development": { "username": "root", "password": "1234", "database": "no..
  • 데이터베이스 세팅하기
    프로그래밍 언어/NODE JS · 댓글
    이제 생성한 모델들을 시퀄라이즈에 등록합니다. models/index.js에는 시퀄라이즈가 자동으로 생성한 코드들이 들어 있을 것입니다. 그것을 다음과 같이 통째로 바꿉닏다.models/index.jsconst Sequelize = require("sequelize");const env = process.env.NODE_ENV || "development";const config = require("../config/config")[env];const User = require("./user");const Post = require("./post");const Hashtag = require("./hashtag");const db = {};const sequelize = new Sequelize( co..
  • 구구단 출력 예제
    프로그래밍 언어/자바 웹 · 댓글
    1. 구구단 예제 실습 파일인 gugu.html, gugu.jsp, gugu2.jsp를 준비합니다. 2. gugu.html을 다음과 같이 작성합니다. 출력할 구구단의 단수를 입력받아 gugu.jsp로 포워딩합니다. 구구단의 단수를 입력하세요. 출력할 구구단: 3. gugu.jsp를 다음과 같이 작성합니다. 스크립트릿 안에서 자바 for문을 이용해 태그의 행을 나타내는 태그를 연속해서 브라우저로 출력합니다. 단 출력 * 4. http://localhost:8090/pro12/gugu.html로 요청하여 입력창에서 단수를 입력한 후 전송합니다. 5. for문을 이용해 구구단을 리스트로 출력합니다. 6. 다음과 같이 gugu2...
  • 데이터베이스 세팅하기 (1)
    프로그래밍 언어/NODE JS · 댓글
    이번 절에서는 MySQL과 시퀄라이즈로 데이터베이스를 설정합니다.로그인 기능이 있으므로 사용자 테이블이 필요하고, 게시글을 저장할 게시글 테이블도 필요합니다. 해시태그를 사용하므로 해시태그를 사용하므로 해시태그 테이블도 만들어야 합니다.models 폴더 안에 users.js와 post.js, hastag.js로 생성합니다. models/user.jsconst Sequlize = require("sequelize");module.exports = class User extends Sequlize.Model { static init(sequelize) { return super.init( { email: { type: Sequlize.STRING(40), ..
  • 프로젝트 구조 갖추기 (2)
    프로그래밍 언어/NODE JS · 댓글
    기본적인 라우터와 템플릿 엔진도 만듭니다. routes 폴더 안에 page.js를, views 폴더 안에는 layout.html, main.html, profile.html, join.html, error.html을 생성합니다. 약간의 디자인을 위헤 main.css를 public 폴더 안에 생성합니다. routes/page.tsconst express = require("express");const router = express.Router();router.use((req, res, next) => { res.locals.user = null; res.locals.followerCount = 0; res.locals.followingCount = 0; res.locals.followerCount ..
  • 쿼리 수행하기
    프로그래밍 언어/NODE JS · 댓글
    views 폴더 안에 mongoose.html과 error.html 파일을 만듭니다.views/mongoose.html 사용자 등록 결혼 여부 등록 아이디 이름 나이 결혼 여부 {% for user in users %} {{user.id}} {{user.name}} {{user.age}} ..
  • 스키마 정의하기
    프로그래밍 언어/NODE JS · 댓글
    시퀄라이즈에서 테이블을 만들었던 것처럼 몽구스 스키마를 만듭니다. schemas 폴더에 user.js와 comments.js를 만듭니다.schemas/users.jsconst mongoose = require("mongoose");const { Schema } = mongoose;const userSchema = new Schema({ name: { type: String, required: true, unique: true, }, age: { type: Number, require: true, }, married: { type: Number, required: true, }, comment: String, createdAt: { type: Dat..
  • 몽고디비 연결하기
    프로그래밍 언어/NODE JS · 댓글 1
    노드와 몽고디비를 몽구스를 통해 연결해보겠습니다. 몽고디비는 주소를 사용해 연결합니다. 주소 형식은 mongodb://[username:password@localhost[:port][/[database][?options]]와 같습니다. [ ] 부분은 없어도 되고 있어도 됨을 의미합니다.username과 password에 몽고디비 계정 이름과 비밀번호를 넣습니다. host가 localhost, port가 27017, 계정이 있는 database가 admin이므로 주소는 다음과 같이 됩니다.mongodb://이름:비밀번호@localhost:27017/admin 먼저 schemas 폴더를 루트 디렉터리에 생성합니다. 폴더 안에 index.js 파일을 생성한 후 내용을 다음과 같이 넣습니다.const mongo..

카카오 로그인 구현하기 (1)

카카오 로그인이란 로그인 인증 과정을 카카오에 맡기는 것을 뜻합니다. 사용자는 번거롭게 새로운 사이트에 회원가입하지 않아도 되므로 좋고, 서비스 제공자는 로그인 과정을 검증된 SNS에 안심하고 맡길 수 있어 좋습니다.SNS 로그인의 특징은 회원가입 절차가 따라 없다는 것입니다. 처음 로그인할 때는 회원가입 처리를 해야 하고, 두 번째 로그인부터는 로그인 처리를 해야 합니다. 따라서 SNS 로그인 전략은 로컬 로그인 전략보다 다소 복잡합니다.const passport = require("passport");const kakaoStrategy = require("passport-kakao").Strategy;const User = require("../models/user");module.exports = ..

로컬 로그인 구현하기 (2)

회원가입, 로그인, 로그아웃 라우터를 작성합니다.routes/auth.jsconst express = require("express");const passport = require("passport");const bcrypt = require("bcrypt");const { isLoggedIn, isNotLoggedIn } = require("./middlewares");const User = require("../models/user");const router = express.Router();router.post("/join", isNotLoggedIn, async (req, res, next) => { const { email, nick, password } = req.body; try { ..

로컬 로그인 구현하기(1)

로컬 로그인이란 다른 SNS 서비스를 통해 로그인하지 않고 자체적으로 회원가입 후 로그인하는 것을 의미합니다. 즉, 아이디/비밀번호 또는 이메일/비밀번호를 통해 로그인하는 것입니다.Passport에서 이를 구현하려면 passport-local 모듈이 필요합니다. 이미 설치했으므로 로컬 로그인 전략만 세우면 됩니다. 로그인에만 해당하는 전략이므로 회원가입은 따로 만들어야 합니다.routes/middlewares.jsexports.isLoggedId = (req, res, next) => { if (req.isAuthenticated()) { next(); } else { res.status(403).send("로그인 필요"); }};exports.isNotLoggedIn = (req, re..

Passport 모듈로 로그인 구현하기

SNS 서비스이므로 회원가입과 로그인이 필요합니다. 회원가입과 로그인을 직접 구현할 수도 있지만, 세션과 쿠키 처리 등 복잡한 작업이 많으므로 검증된 모듈을 사용하는 것이 좋습니다. 바로 Passport를 사용하는 것입니다.이 모듈은 이름처럼 우리의 서비스를 사용할 수 있게 해주는 여권 같은 역할을 합니다.요즘에는 서비스에 로그인할 때 아이디와 비밀번호를 사용하지 않고 구글, 페이스북, 카카오톡 같은 기존의 SNS 서비스 계정으로 로그인하기도 합니다. 이 또한 Passport를 사용해서 해결할 수 있습니다. 먼저 Passport 관련 패키지들을 설치합니다.$ npm i passport passport-local passport-kakao bcrypt app.jsconst express = require(..

데이터베이스 세팅하기 (3)

이제 생성한 모델을 데이터베이스 및 서버와 연결합니다. 아직 데이터베이스를 만들지 않았으므로 데이터베이스로부터 만들겠습니다. 데이터베이스의 이름은 nodebird입니다.MySQL 프롬프트를 통해 SQL문을 데이터베이스를 만들었습니다. 하지만 시퀄라이즈는 config.jspm을 읽어 데이터베이스를 생성해주는 기능이 있습니다. 따라서 config.json을 먼저 수정합니다. MySQL 비밀번호를 password에 넣고 데이터베이스 이름을 nodebird러 바꿉니다. 자동 생성한 config.json에 operatorAliaxes 속성이 들어 있다면 삭제합니다.{ "development": { "username": "root", "password": "1234", "database": "no..

데이터베이스 세팅하기

이제 생성한 모델들을 시퀄라이즈에 등록합니다. models/index.js에는 시퀄라이즈가 자동으로 생성한 코드들이 들어 있을 것입니다. 그것을 다음과 같이 통째로 바꿉닏다.models/index.jsconst Sequelize = require("sequelize");const env = process.env.NODE_ENV || "development";const config = require("../config/config")[env];const User = require("./user");const Post = require("./post");const Hashtag = require("./hashtag");const db = {};const sequelize = new Sequelize( co..

구구단 출력 예제

1. 구구단 예제 실습 파일인 gugu.html, gugu.jsp, gugu2.jsp를 준비합니다. 2. gugu.html을 다음과 같이 작성합니다. 출력할 구구단의 단수를 입력받아 gugu.jsp로 포워딩합니다. 구구단의 단수를 입력하세요. 출력할 구구단: 3. gugu.jsp를 다음과 같이 작성합니다. 스크립트릿 안에서 자바 for문을 이용해 태그의 행을 나타내는 태그를 연속해서 브라우저로 출력합니다. 단 출력 * 4. http://localhost:8090/pro12/gugu.html로 요청하여 입력창에서 단수를 입력한 후 전송합니다. 5. for문을 이용해 구구단을 리스트로 출력합니다. 6. 다음과 같이 gugu2...

데이터베이스 세팅하기 (1)

이번 절에서는 MySQL과 시퀄라이즈로 데이터베이스를 설정합니다.로그인 기능이 있으므로 사용자 테이블이 필요하고, 게시글을 저장할 게시글 테이블도 필요합니다. 해시태그를 사용하므로 해시태그를 사용하므로 해시태그 테이블도 만들어야 합니다.models 폴더 안에 users.js와 post.js, hastag.js로 생성합니다. models/user.jsconst Sequlize = require("sequelize");module.exports = class User extends Sequlize.Model { static init(sequelize) { return super.init( { email: { type: Sequlize.STRING(40), ..

프로젝트 구조 갖추기 (2)

기본적인 라우터와 템플릿 엔진도 만듭니다. routes 폴더 안에 page.js를, views 폴더 안에는 layout.html, main.html, profile.html, join.html, error.html을 생성합니다. 약간의 디자인을 위헤 main.css를 public 폴더 안에 생성합니다. routes/page.tsconst express = require("express");const router = express.Router();router.use((req, res, next) => { res.locals.user = null; res.locals.followerCount = 0; res.locals.followingCount = 0; res.locals.followerCount ..

쿼리 수행하기

views 폴더 안에 mongoose.html과 error.html 파일을 만듭니다.views/mongoose.html 사용자 등록 결혼 여부 등록 아이디 이름 나이 결혼 여부 {% for user in users %} {{user.id}} {{user.name}} {{user.age}} ..

스키마 정의하기

시퀄라이즈에서 테이블을 만들었던 것처럼 몽구스 스키마를 만듭니다. schemas 폴더에 user.js와 comments.js를 만듭니다.schemas/users.jsconst mongoose = require("mongoose");const { Schema } = mongoose;const userSchema = new Schema({ name: { type: String, required: true, unique: true, }, age: { type: Number, require: true, }, married: { type: Number, required: true, }, comment: String, createdAt: { type: Dat..

몽고디비 연결하기

노드와 몽고디비를 몽구스를 통해 연결해보겠습니다. 몽고디비는 주소를 사용해 연결합니다. 주소 형식은 mongodb://[username:password@localhost[:port][/[database][?options]]와 같습니다. [ ] 부분은 없어도 되고 있어도 됨을 의미합니다.username과 password에 몽고디비 계정 이름과 비밀번호를 넣습니다. host가 localhost, port가 27017, 계정이 있는 database가 admin이므로 주소는 다음과 같이 됩니다.mongodb://이름:비밀번호@localhost:27017/admin 먼저 schemas 폴더를 루트 디렉터리에 생성합니다. 폴더 안에 index.js 파일을 생성한 후 내용을 다음과 같이 넣습니다.const mongo..