200401_TIL

홍영란·2020년 3월 31일
0

Immersive_TIL📓

목록 보기
67/72

200401_TIL


  • 오늘 학습한 부분
    • jwt
      // controller/login
      const { User } = require("../../models");
      const bcrypt = require("bcrypt");
      const jwt = require("jsonwebtoken");
      //const secretKey = require("../../config/jwt");
      process.env.SECRET_KEY = "codestates";
      //TODO: 유저 로그인 부분
      // * User Token 생성 함수
      // getToken: function() {
      //     var token = jwt.sign({
      //         id: this.id
      //     }, secret);
      //     return token;
      // }
      module.exports = {
      post: (req, res) => {
        // 이메일로 찾는다.
        User.findOne({
          where: {
            email: req.body.email
          }
        })
          .then(data => {
            console.log(data.dataValues.email, "저장되어 있는 유저정보-이메일");
            // ! 전략 , 이미지만 토큰의 영향을 주지 않게 하여 자유롭게 바뀌게 한다.
            if (data) {
              // 이미지가 아닐
              //?bcrypt 의 compareSync함수를 사용해서 저장된 hash와 입력받은 password의 hash가 일치하는지 확인
              if (bcrypt.compareSync(req.body.password, data.password)) {
                let token = jwt.sign(
                  {
                    id: data.dataValues.id,
                    email: data.dataValues.email,
                    username: data.dataValues.username
                  },
                  process.env.SECRET_KEY,
                  {
                    expiresIn: "1d" // 1일 유효하도록 설정
                  }
                );
                res.send(token);
              }
            } else {
              res.status(400).json({ error: "가입되지 않은 유저입니다." });
            }
          })
          .catch(err => {
            res.status(400).json({ error: err });
          });
      }
      };
      // routes/users.js
      // url: "users/signin"
      router.post("/signin", userController.login.post); //*   로그인
* 오늘 생긴 에러
  * index.js:1 mapDispatchToProps() in Connect(Flashcard) must return a plain object. Instead received undefined. 
  ![](https://velog.velcdn.com/images%2Fhy9202%2Fpost%2F40e9ce39-b018-40fe-8bc7-a3cbb98222d0%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-04-01%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%202.08.26.png)
  
  * DataCloneError: Failed to execute 'pushState' on 'History': cardId => {
      dispatch(Object(_actions_cardActions__WEBPACK_IMPORTED_MODULE_3__["handleHintedPost"])(cardId));
    } could not be cloned.
==========================================
부모 컴포넌트에서 mapDispatchToProps로 내려받은 props를 자식 컴포넌트의 Link state으로 주려고 했을 때 생긴 오류
![](https://velog.velcdn.com/images%2Fhy9202%2Fpost%2F66ceb8f6-9ac9-4bbb-9a49-4e6a2e2b5391%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-04-01%20%E1%84%8B%E1%85%A9%E1%84%8C%E1%85%A5%E1%86%AB%202.14.02.png)

***
* 오늘 해결해야 할 부분
  * AddCard 시 fill-in-the-blank에서...ㅠㅠㅠ
  ![](https://velog.velcdn.com/images%2Fhy9202%2Fpost%2Fb8f5cc59-63c6-4777-bdc5-fa2f0f01283b%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-04-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.14.25.png)
  * marked, hinted 페이지 재접속해야 반영...?
  ![](https://velog.velcdn.com/images%2Fhy9202%2Fpost%2F69a1c316-6f45-49e9-b6cd-86a6c3c8cdf0%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202020-04-01%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%203.18.07.png)
  * local storage에 저장된 usertoken 파기해서 logout
```javascript
handleLogout(e) {
    // console.log(localStorage.usertoken);
    // console.log(localStorage);
    e.preventDefault();
    // localStorage.removeItem("token");
    localStorage.clear(); //* local storage clear
    console.log(localStorage); //* => Storage {length: 0}
    // this.setState({ isLogout: true });
  this.props.history.push("/login");
}

===> token 파기

===> error

profile
JavaScript를 공부하고 있습니다:)

0개의 댓글