当前位置: 首页 > news >正文

营销型网站建设运营软文拟发布的平台与板块

营销型网站建设运营,软文拟发布的平台与板块,国内十大设计公司排名,惠州网站建设翻译目录 前言 定义路由和处理函数 验证表单数据 实现重置密码功能 前言 接前面文章,本文介绍如何编写重置用户密码接口 定义路由和处理函数 路由 // 重置密码的路由 router.post(/updatepwd, userinfo_handler.updatePassword) 处理函数 exports.updatePasswo…

目录

前言

定义路由和处理函数

验证表单数据

实现重置密码功能


前言

接前面文章,本文介绍如何编写重置用户密码接口

定义路由和处理函数

路由

// 重置密码的路由
router.post('/updatepwd', userinfo_handler.updatePassword)

处理函数

exports.updatePassword=(req,res)=>{res.send('重置成功')
}

postman验证

需要在headers中添加请求头authorization,并且加上在登录时生成的token值

验证表单数据

定义验证规则对象并将其导出

// 验证规则对象 - 重置密码
exports.update_password_schema = {body: {// 使用 password 这个规则,验证 req.body.oldPwd 的值oldPwd: password,// 使用 joi.not(joi.ref('oldPwd')).concat(password) 规则,验证 req.body.newPwd 的值// 解读:// 1. joi.ref('oldPwd') 表示 newPwd 的值必须和 oldPwd 的值保持一致// 2. joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值// 3. .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则newPwd: joi.not(joi.ref('oldPwd')).concat(password),},
}

导入验证规则对象

// 导入需要的验证规则对象
const { update_password_schema } = require('../schema/user')

在重置密码路由中添加验证

//重置用户密码router.post('/updatePwd',expressJoi(update_password_schema),userinfo_handler.updatePassword)

使用postman,当原密码与密码相同时

实现重置密码功能

定义sql语句

const sql = 'select * from ev_users where id=?'

db.query()调用sql语句

db.query(sql,req.auth.id,(err,results)=>{//判断sql语句是否正确if(err) return res.send({status:1,message:err.message})//判断影响行数是否为1if(results.length!==1) return res.send({status:1,message:'密码重置失败'})res.send('密码重置成功')
})

导入bcryptjs密码加密模块

const bcrypt = require('bcryptjs')

判断原密码是否正确

// 判断提交的旧密码是否正确
const compareResult = bcrypt.compareSync(req.body.oldPwd, results[0].password)
if (!compareResult) return res.cc('原密码错误!')

对新密码加密,定义新的更新密码的sql语句并对sql语句操作

对新密码加密

const newPwd = bcrypt.hashSync(req.body.newPwd,10)

定义sql语句

const sql = 'update ev_users set password =? where id =?'

使用db.query()调用sql语句

db.query(sql,[newPwd,req.auth.id],(err,results)=>{if(err) return res.send({status:1.message:err.message})if(results.affectedRow!==1) return res.send({status:1,message:'更新密码失败'})res.send({status:0,message:'密码更新成功'})
})

重置密码接口完整代码

// 导出重置用户密码
exports.updatePassword=(req,res)=>{// 定义sql语句const sql = 'select * from ev_users where id=?'db.query(sql,req.auth.id,(err,results)=>{// 判断sql语句是否正确if(err) return res.send({status:1,message:err.message})// 检查id是否存在if(results.length!==1) return res.send({status:1,message:'该用户不存在'})// 验证密码是否正确const compareResult = bcrypt.compareSync(req.body.oldPwd, results[0].password)if(!compareResult) return res.send({status:1,message:'原密码错误'})// 定义sql语句const sql = 'update ev_users set password =? where id = ?'// 对新密码进行加密const newPwd = bcrypt.hashSync(req.body.newPwd,10)// 执行sql语句,根据id查找db.query(sql,[newPwd,req.auth.id],(err,results)=>{// sql语句执行失败if(err) return res.send({status:1,message:err.message})// sql语句执行成功,但影响行数不为1if(results.affectedRows!==1) return res.send({status:1,message:'更新密码失败'})res.send({status:0,message:'密码更新成功'})})})
}

使用postman模拟发送请求

用户b,原密码为000000

当输入错误的原密码时

输入正确的原密码时

http://www.yayakq.cn/news/791537/

相关文章:

  • 如何建立自已的购物网站户外网站模板
  • 成都市网站建设费用及企业敬请期待图片高清大图
  • 网站内容建设培训通知网站模板哪个好用
  • 下列软件属于网站开发工具的是做网站网页需要什么
  • 企业网站建设浩森宇特无极电影网在线观看完整版
  • hao爱做网站wordpress建站需要多大内存
  • c2c网站建设要多少钱wordpress文章链接
  • 好三网网站做卡盟网站赚钱吗
  • 淘宝网站代理怎么做的小红书3000粉丝推广报价多少
  • 花20亿做网站如何在自己建设的网站上发表文章
  • 电子商务网站的建设 论文一般网站的费用
  • 自己的网站什么做优化中国新闻最新消息大事件
  • 网站跟app区别江西省建设网站
  • 建站的网站浙江建设继续教育学院网站
  • 商务网站建设用的是什么软件网站重建
  • 网站自动生成系统开发者应用
  • 自助下单网站手机便宜电商网站建设
  • 装修网站合作莱芜一中官网
  • 自己做的网站如何管理郴州网站建设哪家公司好
  • 北京网站定制报价好的界面建筑网站
  • 网站响应式图片切换代码爱客是什么牌子档次
  • 农村自建房设计网站南沙做网站
  • 淳安千岛湖建设集团网站常见的网站空间有哪些
  • 自己买服务器搭建网站广东网页设计
  • 时尚工作室网站源码吉林省建设信息网工程招投标
  • 北京做网站建设的公司有哪些wordpress 下载页面模板怎么用
  • 多国语言网站建设动漫制作专业需要了解哪些知识
  • 牛天下网站建设信阳网络推广公司
  • 网站建设怎么宣传wordpress 端口号
  • 产品网站开发计划表微信企业号可以做微网站吗