nodejs--开发自己的项目——3——注册用户信息函数

  • 检测提交表单数据是否合法
  • 检测用户名是否被占用
  • 对密码进行加密处理(不是明文的密码)
  • 插入新用户

 检测提交表单数据是否合法

 首先进行检测,是否可以接收表单数据req.body

在路由处理函数中进行表单数据的处理——第一步检验 

    //对表单中的数据进行合法性的校验
    if(!userInfo.username||!userInfo.password){
        return res.send(
            {
                status:1,
                message:'用户名或者密码不合法'
            }
        )
    }

检测用户名是否被占用

 导入数据库模块——根据提交的表单数据——在数据库中查找是否有相同名称的

    //定义SQL语句,查询用户名是否被占用
const sqlStr='select * from ev_users where username=?'//sql语句
 
db.query(sqlStr,[userInfo.username],(err,results)=>{
    
    if(err) return  res.send(//执行SQL语句失败
        {
            status:1,
            message:err.message
        }
    )
    if(results.length>0) return  res.send(//select查询的结果是数组,用户名被占用
        {
            status:1,
            message:'用户名被占用,请更换用户名'
        })
    //用户名可用使用

    
})

 这里有个注意点--res.send只能发送一次 ,多次就出现了问题

 这里的密码是明文存储的——说明数据库被盗了之后,密码很危险,希望密码是加密处理的

对密码进行加密处理(不是明文的密码)——存到表中的是加密的密码

          使用包:bcryp.js包(加密之后的密码,无法被逆向破解同一明文密码多次加密(张三和李四如果密码相同,加密结果不同),得到的加密结果各不相同,保证了安全性)调用bcrypt.hashSync进行加密--归还给userInfo

安装对应的包: npm i bcryptjs@加版本

   //调用bcrypt.hashSync进行加密--归还给userInfo
   userInfo.password=bcrypt.hashSync(userInfo.password,10)//加密的内容

插入新用户(SQL语句)

    //定义插入新用户的SQL语句——插入的少使用表(字段)values(值) 插入多使用set
    const sqlStr1='insert into ev_users set ?'
    db.query(sqlStr1,{username:userInfo.username,password:userInfo.password},(err,results)=>{
     if(err) return  res.send(//执行SQL语句失败
        {
            status:1,
            message:err.message
        }
        )
        if(results.affectedRows!==1)return  res.send(//判断影响行数是否为1
        {
            status:1,
            message:'注册用户失败,请稍后再试!'
        }
        )
        res.send(
            {
                status:0,
                message:'注册用户成功!'
            }
        )//响应给客户端的话

    })

目前该路由处理函数的总代码——

//对应的路由处理函数

//导入数据库操作模块
const db=require('../db/index')
//检测数据库是否导入成功
// db.query('select 1',(err,results)=>{

//     if(err) return console.log(err.message)

//     console.log(results)//此结果可以正常打印输出就表示数据库连接正常

// })
//导入bcryptjs包对明文密码进行加密
const bcrypt=require('bcryptjs')
//这是注册新用户的处理函数
const regUser=function(req,res){//postreq.body
    //获取客户端提交给服务器的用户信息
    const userInfo=req.body
    //console.log(userInfo)——测试是否接收到表单数据
    //对表单中的数据进行合法性的校验
    if(!userInfo.username||!userInfo.password){
        return res.send(
            {
                status:1,
                message:'用户名或者密码不合法'
            }
        )
    }
    //定义SQL语句,查询用户名是否被占用
const sqlStr='select * from ev_users where username=?'//sql语句
db.query(sqlStr,[userInfo.username],(err,results)=>{
    
    if(err) return  res.send(//执行SQL语句失败_
        {
            status:1,
            message:err.message
        }
    )
    if(results.length>0) return  res.send(//select查询的结果是数组,用户名被占用——查询不会影响行数
        {
            status:1,
            message:'用户名被占用,请更换用户名'
        })
    //用户名可用使用
    //调用bcrypt.hashSync进行加密--归还给userInfo
    userInfo.password=bcrypt.hashSync(userInfo.password,10)//加密的内容
    //console.log(userInfo)
    
    //定义插入新用户的SQL语句——插入的少使用表(字段)values(值) 插入多使用set
    const sqlStr1='insert into ev_users set ?'
    db.query(sqlStr1,{username:userInfo.username,password:userInfo.password},(err,results)=>{
     if(err) return  res.send(//执行SQL语句失败
        {
            status:1,
            message:err.message
        }
        )
        if(results.affectedRows!==1)return  res.send(//判断影响行数是否为1
        {
            status:1,
            message:'注册用户失败,请稍后再试!'
        }
        )
        res.send(
            {
                status:0,
                message:'注册用户成功!'
            }
        )//响应给客户端的话

    })
    
})
  
}
//这是登录的处理函数
const login=function(req,res){//post
    res.send('注册OK')//响应给客户端的话
}
//向外暴露
module.exports={
    regUser,
    login
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值