-
작업일지 bcrypt를 이용한 로그인 구현Project 2021. 4. 19. 23:44
bcrypt를 이용한 로그인 구현
bcrypt를 이용해 유저 DB에 저장하면 아래와같이 저장된다.
CODE
// jwt 사용한 로그인 및 토큰 생성 exports.login = async (req, res, next) => { const { email, password } = req.body; if (typeof email !== "string") return res.status(400).send({ err: "이메일 형식이 틀렸습니다." }); if (typeof password !== "string") return res.status(400).send({ err: "비밀번호가 형식이 틀렸습니다." }); try { //유저정보 유무 확인 const user = await User.findOne({ email }); if (user == null) { return res .status(400) .send({ err: "이메일 혹은 비밀번호가 일치하지 않습니다." }); } //bcrypt 해쉬암호와 입력값 비교, result: true or flase const match = await bcrypt.compare(password, user.password); if (match) { const token = jwt.sign({ userId: user._id }, process.env.TOKEN_KEY); return res.send({ result: { user: { token: token, name: user.name } } }); } //유저 이메일과 비밀번호가 불일치 할 때 return res .status(400) .send({ err: "이메일 혹은 비밀번호가 일치하지 않습니다." }); } catch (err) { console.log(err); return res.status(400).send({ err: err.message }); } };
해쉬데이터로 저장되기 때문에 로그인 과정에서 또 처리를 한번 더 해줘야한다.
기존의 코드는 user정보의 유무로 한꺼번에 검사하는 방식이었어서,
팀원에게 양해를 구하고 수정하고, 설명 드렸다.
최대한 팀원의 코드를 많이 건드리고싶지않았기 때문에.. 최대한 적게 수정했다.
왜냐하면.. 이번주에는 코드리뷰를 해주신다고하셨기때문에.
또 워낙 깔끔하게 잘 짜주셔서 순서만 잘 짜두면 됐다...
'Project' 카테고리의 다른 글
pm2-slack 이용해서 pm2 log 공유하기 (0) 2021.05.19 node-schedule, node-cron 이용하기 (0) 2021.05.19 작업일지 평문 저장되는 비밀번호를 해싱해서 저장하기 (0) 2021.04.19 작업일지3 (0) 2021.04.16 작업일지 1 (0) 2021.04.15