Day3-密码加密+MySQL插入+优化

一、密码加密

通过bcryptjs加密

(1)在终端输入

npm i bcrypyjs@2.4.3

(2)在router-handler文件夹下的user.js引入

const bcrypt = require('bcryptjs')

在exports.register里面写

userInfo.password = bcrypt.hashSync(userInfo.password,10)

如单纯测试,可以写

const bcrypt = require('bcryptjs');

var a  = bcrypt.hashSync('666666',10);

console.log(a);

二、向mysql插入数据

在加密的语句后面写

const sql = 'insert into people set ?';
db.query(aql,{name:userInfo.name,password:userInfo.password},(err,results)=>{
      if(err) return res.send({status:1,message:err.message});
      if(results.affectedRows !== 1) return res.send({status:1,message:"注册失败"});
      res.send({status:0,message:"注册成功"})
})

三、利用中间件优化

(1)在app.js的路由前面(也就是 const userRouter = require('./router/user') 前面)

app.use((req,res,next)=>{
  res.cc = function (err,status = 1){
    res.send({
      status,
      message:err instanceof Error ? err.message : err,
    })
  }
  next()
})

(2)在outer-handler文件夹下的user.js 通过 res.cc()调用

const db = require('../db/index')

const bcrypt = require('bcryptjs')

exports.register = (req,res)=>{
  const userInfo = req.body;
  if(!userInfo.name || !userInfo.password){
    return res.send({
        status:1,
        message:"用户名和密码不能为空"
      })
  }

  const sqlStr = 'select * from people where name=?';
  db.query(sqlStr,userInfo.name,(err,results)=>{
    if(err){
      return res.cc(err)
      // return res.send({
      //   status:1,
      //   message:err.message
      // })
    }

    if(results.length > 0 ){
      return res.cc("用户名被占用")
    }
    // 密码加密
    userInfo.password = bcrypt.hashSync(userInfo.password,10);
    // 插入 SQL语句
    const sql = 'insert into people set ?';
    db.query(sql,{name:userInfo.name,password:userInfo.password},(err,results)=>{
      if(err) return res.cc(err);
      if(results.affectedRows !== 1) return res.cc("注册失败");
      res.cc("注册成功",0);
     
    })

  })
  res.send('注册')
}

exports.login = (req,res)=>{
const userinfo = req.body;
  const sql = `select * from people where name=? `
  db.query(sql,userinfo.name,(err,results)=>{
    if(err) return res.cc(err);
    if(results.length !== 1) return res.cc("登录失败");

     res.send('登录')
  })
 
}

四、验证(省略,数据就不验证了,某天补充)

用  @hapi/joi 定义验证规则

用  @escook/express-joi  将验证规则应用到路由

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值