亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【金秋打卡】第6天 Node.js+Koa2+MySQL打造前后端分離精品項目《舊島》

课程章节: 【构建用户身份系统】通用用户系统与小程序用户系统

课程讲师: 7七月

课程内容:

用户注册与Sequelize新增数据

model 操作数据库
api/v1/user.js

const User = require(models/user.js)

const v = await new RegisterValidator().validate(ctx)
const user = {
	email: v.get('body.email'),
	password: v.get('body.password2'),
	nickname: v.get('body.nickname')
}
try{
	const r = User.create(user) // 创建我一个 user 的表 返回 user 模型
}catch(error){
	throw new ParameterException('email不能重复')
}

models/user.js

// email 保证唯一性
email: {
	type: Sequelize.STRING(128),
	unique: true 
}

validators/validator.js

// 查询email是否唯一
async validateEmail(vals) {
	const email = await vals.body.email
	User.findOne({
	   where: {
			email
       }
    })
    // email如果存在
    if(user) {
		throw new Error('email已存在')
    }
}

把lin-validator.js 改成 第二版

盐与密码加密的小知识

password 绝对不能已明文的形式保存在数据库中, 必须加密

npm install jsonwebtoken

在 api/v1/user.js

const bcrypt = require('bcryptjs')

// 不是位数, 生成盐花费的成本  更高 安全性更高
const salt = bcrypt.genSaltSync(10) // 盐
// 如果两个用户密码相同, 加密后的密文不会相同 这就是盐的作用, 防止彩虹攻击
const pwd = bcrypt.hashSync(v.get('body.password2'),salt) // 加密
// 直接使用加密过后的密码

模型的 set 操作

models/user.js

password: {
	type: Sequelize.STRING,
	set(val){
      const salt = bcrypt.genSaltSync(10) // 盐
      const pwd = bcrypt.hashSync(val,salt) // 加密
      this.setDataValue('password',pwd) // model模型里的方法  可以访问 this
    }
}
在模型中实现对 password 的加密 就不需要在接口中实现啦
只要 password 进行赋值 就会调用set

Success 操作成功处理

在core/http-exception.js

class Success extends HttpException {
	constructor(msg, errorCode) {
		super()
		this.code = 201
		this.msg = msg || 'ok'
		this.errorCode = errorCode || 0
    }
}

在api/v1/user.js

throw new global.errs.Success()

课程收货

了解了加密小知识

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消