[NodeJS] 회원가입 구현하기

1 minute read

회원가입 구현하기Permalink

1. 코딩 환경 설정Permalink


백엔드 작업 시 필요한 코딩 환경을 먼저 설정합니다.

이번 글에서는 window visual studio code에서 진행합니다. 필요에 따라 다른 개발 환경을 이용해도 됩니다.

1) 프로젝트를 생성합니다.

2) 터미널에 npm init 을 입력해 package.json 파일을 작성합니다.

​ - package.json : 프로젝트 정보와 의존성을 관리하는 문서로 개발환경을 구축해줍니다.

3) npm install을 입력해 필요한 모듈을 설치합니다. (밑에서 다룰 내용입니다.)

2. 필요한 모듈 설치Permalink


nodejs를 이용해 로그인과 회원가입 페이지를 구현하기 위해 필요한 모듈들입니다.

  • express : nodejs 웹 애플리케이션 프레임워크
  • mysql : database
  • cors : 현재 도메인과 다른 도메인으로 리소스가 요청될 때 사용
  • body-parser : client의 POST request data의 body로부터 파라미터를 편리하게 추출
  • cookie-parser : 요청된 쿠키를 쉽게 추출할 수 있도록 도와주는 미들웨어
  • express-session : express 프레임워크에서 세션을 관리하기 위해 필요한 미들웨어
  • bcrypt : 패스워드 암호화

3. 클라이언트로 부터 값 받아오기Permalink


index.js

const express = require('express')
const app = express();
const bodyParser = require('body-parser')

app.use(express.json())
app.use(bodyParser.urlencoded({
	extended: true
}))

routes/users.js

router.post('/register', (req, res, next) => {
	console.log(req.body)
	res.send()
})
  • user에 대한 정보 라우터이므로 users.js 로 설정해주었습니다.

4. 데이터베이스 연결Permalink


config/config.js

const mysql = require('mysql')

const db = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'root',
    port: 3000,
    database: 'dbs'
})

db.connect();
moudle.exports = db;

routes/users.js

const db = require('../config/config')

router.post('/register', (req, res, next) => {
	console.log(req.body)
	res.send()
})
  • user에 대한 정보 라우터이므로 users.js 로 설정해주었습니다.
DB에 값 저장하기Permalink
  • SQL INSERT

    INSERT INTO user(`id`,`pw`) VALUES ('ids', 'pws');
    
    • id와 pw에 ids와 pws 값이 들어갑니다.

      id pw
      ids pws

=> routes/users.js

const db = require('../config/config')

router.post('/register', (req, res, next) => {
	const parameter = [req.body.id, req.body.pw]
    
    db.query('INSERT INTO user(`id`, `pw`) VALUES (?, ?)', parameter, (err, doc) => {
        if (err) console.log(err)
    })
    res.send()
})
  • DB에 회원 정보를 저장하는 방식입니다.

5. 비밀번호 암호화Permalink


routes/users.js

const db = require('../config/config')

const bcrypt = require('bcrypt')
const saltRounds = 10 # 10자리 salt를 이용해 비밀번호를 암호화합니다.

router.post('/register', (req, res, next) => {
	const param = [req.body.id, req.body.pw]
    
    bcrypt.hash(param[1], saltRounds, (error, hash) => {
        param[1] = hash
        db.query('INSERT INTO user(`id`, `pw`) VALUES (?, ?)', param, (err, doc) => {
            if (err) console.log(err)
    })
        
    })
    res.send()
})
  • 암호화된 비밀번호를 DB에 저장시켰습니다.

Leave a comment