鹽與密碼加密

  1. 執行npm install bcryptjs --save安裝依賴包,使用bcryptjs進行加密
  2. user.js api中導入bcryptjs
const Router = require('koa-router')
const {RegisterValidator} = require('../../validators/validator')
const {User} = require('../../models/user')
const bcrypt = require('bcryptjs')
const router = new Router({
  prefix: '/v1/user'
})

// 註冊 新增
router.post('/register', async (ctx)=>{
  // 思維路徑
  // 接收參數, validator校驗
  // email, password1,password2,nickname
  const v = await new RegisterValidator().validate(ctx)
  const salt = bcrypt.genSaltSync(10)
  const psw = bcrypt.hashSync(v.get('body.password1'), salt)
  // 獲取到傳遞的數據
  const user = {
    nickname: v.get('body.nickname'),
    password: psw,
    email: v.get('body.email')
  }
  // 關聯到數據庫
  const r = await User.create(user)
})

module.exports = router

使用模型改寫加密方法

user模型文件改寫

const bcrypt = require('bcryptjs')
password: {
   type: Sequelize.STRING,
   set(val){
      const salt = bcrypt.genSaltSync(10)
      const psw = bcrypt.hashSync(val, salt)
      this.setDataValue('password', psw)
  }
}

user.js api文件保持原先的

const Router = require('koa-router')
const {RegisterValidator} = require('../../validators/validator')
const {User} = require('../../models/user')
const router = new Router({
  prefix: '/v1/user'
})

// 註冊 新增
router.post('/register', async (ctx)=>{
  // 思維路徑
  // 接收參數, validator校驗
  // email, password1,password2,nickname
  const v = await new RegisterValidator().validate(ctx)
  // 獲取到傳遞的數據
  const user = {
    nickname: v.get('body.nickname'),
    password: v.get('body.password1'),
    email: v.get('body.email')
  }
  // 關聯到數據庫
  const r = await User.create(user)
})

module.exports = router
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章