ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 작업일지 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
Designed by Tistory.