[TIL] 19.08.22 spreent - shortly

2019. 8. 22. 23:44TIL

오늘 한일

어제에 이어서 shotly를 진행하였다. 오늘은 비밀번호를 해싱해서 테이블로 보내는 코드와 session에 로그인 값을 할당하여 유저 정보를 받을 수 있도록 하는 코드를 작성하였다. 

해싱은 crypto를 사용하여 암호화를 해주었다. 그리고 session의 값을 테이블과 비교를 할때는 bcrypt의 comeparestnc 함수를 이용해 보려고 했지만 계속 에러가 나서 결국 로그인할 때 패스워드의 값을 crpyto로 보내어 주어 비교하는 방식으로 코드를 작성하였다. 

session에 값을 보내는 것에 꽤 애를 먹었다. 로그인 할때 seesion에 값을 넘겨주고 유저 정보를 불러올 때 session으로 넘겨준 값을 불러와서 비교를 하려고 했는데 계속 값이 전달되고 있지 않았다. 결국 문제는 로그인할 때 테이블에서 패스워드를 불러와서 값을 비교해주는 코드 부분에서 where를 할 때 {email: email} 값만 정의해주고 있었고 그래서 암호화되지 않은 패스워드 값이 넘어가서 값이 아예 나오질 못하게 된다. 그래서 seesion에 빈 값이 넘어가게 되는 것이 원인이었다.

 var email = req.body.email,
    password = crypto
      .createHash("sha1")
      .update(req.body.password)
      .digest("hex")
      .slice(0, 5);
users
 .findOne({ where: { email: email, password: password } })
   .then(function(user) {
      if (user.dataValues.password !== password) {
        res.redirect("/Login");
      }

로그인하면 세션이 그 로그인 정보를 가지고 있고 쇼트를 하면 현재 로그인 정보를 유저 테이블 정보와 비교해서 이메일 값을 가져온다 그리고 주소 값들에 그 이메일 값을 붙여주는 새로운 테이블을 만든다.

 

 

 

오늘 메모

Truncate “table name”

 

bcrypt의함수를 사용해서 저장된 hash 입력받은 password hash 일치하는지 확인합니다.

bcrypt.compareSync(user.currentPassword, user.originalPassword)에서 user.currentPassword 입력받은 text값이고 user.originalPassword user password hash값입니다. hash 해독해서 text 비교하는것이 아니라 text값을 hash 만들고 값이 일치하는 지를 확인하는 과정입니다.

 

Session.destoy() / clearCookie 차이 (찾아보기)

일반 express ssession을 관리를 한다면 destroy

 

 

session 참고자료

'TIL' 카테고리의 다른 글

[TIL] 19.08.26 시험  (0) 2019.08.27
[TIL]aws  (0) 2019.08.23
[TIL] 19.08.21 spreent - shortly  (0) 2019.08.22
[TIL] 19.08.20 MySQL  (0) 2019.08.20
[TIL] MySQL  (0) 2019.08.19