bcrypt๋?
์น ํ์ด์ง๋ฅผ ๊ตฌํํ ๋ ๋ณด์์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์ํ๋์ด์ผ ํ ์์์ ๋๋ค. ๋น๋ฐ๋ฒํธ๋ฅผ ํ ์คํธ ๊ทธ๋๋ก ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅํด ๊ด๋ฆฌํ๋ ๊ฒ์ ํด์ปค์๊ฒ ๋๋๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๋ ๊ฒ๊ณผ ๋ค๋ฆ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ณ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ํธํ ํ๋ ๊ฒ์ด bcrypt ๋ชจ๋์ ๋๋ค.
bcrypt๋ ๋จ๋ฐฉํฅ ํด์ ํจ์๋ฅผ ์ด์ฉํ ๋ชจ๋๋ก์จ Salt ๋ผ๋ ๊ฐ๋ ์ ์ฌ์ฉํฉ๋๋ค. Salt ๋ผ๋ ๊ฐ๊ณผ ํด์๋ ๋น๋ฐ๋ฒํธ๋ฅผ ํฉ์ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ฒ ๋๋๋ฐ ์ด๋ ๊ฒ ํ๋ฉด, ๋ง์ฝ "1234" ๊ฐ์ ๋น๋ฐ๋ฒํธ๋ฅผ ํด์ํจ์์ ๋ฃ์์๋ ํญ์ ๋ค๋ฅธ ๊ฐ์ Salt ๊ฐ๊ณผ ๋น๋ฐ๋ฒํธ๊ฐ ํฉ์ณ์ ํด์ปค๋ค์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ฐพ๋๋ฐ ์์ด ๋์ฑ ํ๋ค๊ฒ ๋ง๋ญ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ
- npm i bcrypt๋ฅผ ์ํํฉ๋๋ค.
- const bcrypt = require('bcrypt'); ๋ก ๋ถ๋ฌ์ต๋๋ค.
์ค๋ช
- ์ด๋ฏธ์ง๋ async/await๋ฅผ ์ฌ์ฉํ bcrypt ๊ตฌ๋ฌธ์ ๋๋ค. ๋๋ฒ์งธ "12"๋ผ๋ ์ธ์ ๊ฐ์ด ๋ฐ๋ก Salt ์ ๋๋ค. ๋ค์๊ณผ ์ํํ๋ฉด ํด์ฌ๋ password๊ฐ์ ๋ฐ์ ์ ์์ต๋๋ค.
router.post('/join',isNotLoggedIn, async(req, res)=>{
const password_hash = await bcrypt.hash(req.body.password_join, 12);
var query = `
INSERT INTO ${process.env.DB_DATABASE}.user_information (
user_id,
user_pw,
user_name,
user_email)
VALUES (
'${req.body.id_join}',
'${password_hash}',
'${req.body.name_join}',
'${req.body.email_join}'
);`;
await dbPool(query);
res.render('join');
});
2. ์ ์ด๋ฏธ์ง์์ hash ๋ password๋ฅผ ๊ฐ์ ธ์์ ํ ์คํธ๋ก ์ ๋ ฅ๋ฐ์ ๋น๋ฐ๋ฒํธ์ compare๋ฅผ ํฉ๋๋ค. ๊ฐ๋ค๋ฉด true, ๋ค๋ฅด ๋ฉด false๋ฅผ ๋ฐํํฉ๋๋ค.
const localStrategy = require("passport-local").Strategy;
const dbPool = require('../config/config.js') //DB ์ฐ๊ฒฐ
const bcrypt = require('bcrypt');
module.exports = passport => {
passport.use(
new localStrategy({
usernameField: "email", // ์ฌ๊ธฐ์ id,pw์ ๊ฐ์ index.html์ form์์ ํด๋นํ๋ name๊ฐ์ด์ฌ์ผ ํฉ๋๋ค.
passwordField: "password"
},
async(email, password, done) => { // id, pw๋ ์์์ ๋ฐ์ ๊ฐ ์
๋๋ค.
try {
const user = await dbPool(`SELECT * FROM ${process.env.DB_DATABASE}.user_information WHERE user_id ='${email}'`);
const password_key = await bcrypt.compare(password, user[0].user_pw);
console.log(password_key);
console.log(user[0]);
if(user){
if (email === user[0].user_id && password_key === true) { // id,pw๋ฅผ ์ฌ์ฉํ์ฌ db์์ ์ฌ์ฉ์๋ฅผ ์กฐํํ๋ ๋ก์ง์ด ๋ค์ด๊ฐ์ผ ํฉ๋๋ค.
console.log("localStrategy์์ id,pw ์กฐํ ์ฑ๊ณต");
done(null, user[0]);
}else{
console.log("๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค.");
done(null, false, {message : '๋น๋ฐ๋ฒํธ๊ฐ ์ผ์นํ์ง ์์ต๋๋ค.'});
}
}else{
console.log("๊ฐ์
๋์ง ์์ ํ์์
๋๋ค.");
done(null, false, {message:'๊ฐ์
๋์ง ์์ ํ์์
๋๋ค.'});
}
} catch (error) {
console.log(error);
done(null, false, {message:'๊ฐ์
๋์ง ์์ ํ์์
๋๋ค.'});
}
}
)
);
};
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋กํ ํ์ ์ดํดํ๊ธฐ with ํ๋กํ ํ์ ์ฒด์ธ (2) | 2020.12.17 |
---|---|
[DB] ์ ํ, ๋ฐ์ ํ, ๋น์ ํ ๋ฐ์ดํฐ (1) | 2020.12.16 |
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ๊ฐ๋ (1) | 2020.12.16 |
[JS] ๋๋ง์ ์ฒ ํ์ด ๋ด๊ธด ์ฝ๋๋?? (2) | 2020.12.16 |
[Node.js] Express-generator ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๊ฒฝ ๋ง๋ค๊ธฐ (0) | 2020.12.14 |