[NodeJS] 회원가입 구현하기
회원가입 구현하기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