12.6 공부
videoController에서 Video.create했던 것처럼
userController에서 user.create하기
우선 userController에
import User from "../models/User";
export const postJoin = async(req, res) => {
console.log(req.body);
const {name, username, email, password ,location} =req.body;
await User.create{( //User create할 때는 awiat해야함 유저가 만들어질때까지 기달려야하기 때문에 + async도
name,
username,
email,
password,
location
)};
res.end();
};
유저를 생성한 다음 뭘할까?
유저를 로그인 페이지로 보내주면 될 것같음
res.end();
return res.redirect("/login") //라우터에 로그인페이지 url있었슴
from을 채우고 mongodb에서 데이타 를보면
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
youtube 0.000GB
> use youtube
switched to db youtube
> show collections
users
videos
> db.users.find()
{ "_id" : ObjectId("61ae07242457da9f27a4430b"), "email" : "kfjkdjf@naver.com", "username" : "1686023", "password" : "ddddfsfd", "name" : "김애옹", "location" : "dfdfsdfsdf", "__v" : 0 }
패스워드가 노출이되어있는 것을 볼 수있음 --> password hashing 해석이되지않게 보안
pssward hashing
일방향 함수 2121212 ->fdjflksdjieljfksdjf로 바꿔줌
입력값으로 항상 같은 출력값이 나오지만 출력값으로 입력값을 알 수없다.
[해시함수 테스트]
https://emn178.github.io/online-tools/sha256.html
npm i bcrypt
https://www.npmjs.com/package/bcrypt
node bcrypt :password hashing , rainbowtable 공격을 막아줌,
사용법 bcrypt.hash(패스워드, saltRounds몇번 해싱 할 것인지, function(err,hash){})
user를 저장하기 전에 hashing 해야함
user.js에
import bcrypt from "bcrypt"
userSchema.pre("save", async function () {
console.log("Users password:", this.password); // 여기서 this는 User.create할 때 User
this.password = await bcrypt.hash(this.password, 5); //await 사용하고있기 때문에 콜백함수 사용하지 않아도 됨
console.log("Hashed password:", this.password);
});
////
Users password: dfdfdf
Hashed password: $2b$05$CReLyxZPznfHke8TfJ81k.g7C22F15iXi6NMxQVsL8EHbZxAb6fou
------------------------------
중복 코드 삭제하기
$or (mongodb 기능)
const exists = await User.exists({ $or:[ { }, { } ]}); 이메일또는 유저네임 존재하는것
xxxx const exists = await User.exists({username, email}); 이메일과 유저네임 동시에 존재하것
패스워드 확인
if(password !== password2){
return res.render("join",{
pageTitle,
errorMessage: "Password confirmation does not match."
});
}
https://docs.mongodb.com/manual/reference/operator/query/or/#mongodb-query-op.-or