1. 程式人生 > 其它 >node+express+jwt驗證+加密

node+express+jwt驗證+加密

var express = require('express');
var router = express.Router();
const Users = require('../models/users.js')
const bcrypt = require("bcryptjs")
const jwt = require("jsonwebtoken")

process.env.SECRET_KEY = "secret"

/* GET users listing. */
router.get('/', (req, res, next) => {
  res.json({
    code: 1,
    data: "res",
    msg: "成功"
  })
});
// 註冊 
router.post('/register', (req, res, next) => {
    // console.log(req.body)

    const now = new Date()
    const userData = {
      name: req.body.name,
      password: req.body.password,
      age: 18,
    }
    // cun 
    Users.findOne({
      where: {
        name: userData.name
      }
    }).then((user) => {
      console.log('傳遞的資料', userData)
      if (!user) {
        // 加密
        bcrypt.hash(req.body.password, 10, (err, hash) => {
          userData.password = hash
          Users.create(userData).then(user => {
            console.log('成功')
            res.json({
              status: user.name + "註冊成功"
            })
          }).catch(err => {
            res.send("error" + err)
          })
        })

      } else {
        console.log(user + '已經註冊')

        res.json({
          status: user.name + "已經註冊了"
        })
      }
    })
    // console.log('ends')
  }),
  // 登入
  router.post("/login", (req, res) => {
    console.log(req.body)
    Users.findOne({where:{name:req.body.name}}).then(user=>{
      // 查詢使用者
      if(user){
        if(bcrypt.compareSync(req.body.password,user.password)){
          console.log("登入成功")
          let token = jwt.sign(user.toJSON(),process.env.SECRET_KEY,{
            expiresIn:1440
          })
          // res.send("登入成功")
          res.json({msg:"登入成功",token})
        }else{
          console.log("密碼錯誤")
          res.send("密碼不正確")
        }
      }else{
        console.log("未找到使用者錯誤")
        res.status(400).json({error:"使用者不存在"})
      }


    })
    .catch(err => res.send("error22" + err))

  })



// end
module.exports = router;