Node编写重置用户密码接口

这篇具有很好参考价值的文章主要介绍了Node编写重置用户密码接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

定义路由和处理函数

验证表单数据

实现重置密码功能


前言

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

定义路由和处理函数

路由

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

处理函数

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

postman验证

Node编写重置用户密码接口,Node,1024程序员节,前端,node.js

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

Node编写重置用户密码接口,Node,1024程序员节,前端,node.js

验证表单数据

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

// 验证规则对象 - 重置密码
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,当原密码与密码相同时

Node编写重置用户密码接口,Node,1024程序员节,前端,node.js

实现重置密码功能

定义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})
    //判断影响行数是否为1
    if(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语句执行成功,但影响行数不为1
            if(results.affectedRows!==1) return res.send({status:1,message:'更新密码失败'})
            res.send({status:0,message:'密码更新成功'})
        })
    })
}

使用postman模拟发送请求

用户b,原密码为000000

Node编写重置用户密码接口,Node,1024程序员节,前端,node.js

当输入错误的原密码时

Node编写重置用户密码接口,Node,1024程序员节,前端,node.js

输入正确的原密码时

Node编写重置用户密码接口,Node,1024程序员节,前端,node.js文章来源地址https://www.toymoban.com/news/detail-720692.html

到了这里,关于Node编写重置用户密码接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1024程序员节特辑:【Spring Boot自动配置原理揭秘】

    主页传送门:📀 传送   Spring Boot 是一个用于创建独立的、生产级别的 Spring 应用程序的框架。它极大地简化了 Spring 应用程序的开发过程,其中一个关键的功能就是自动配置(Auto-Configuration)。   自动配置可以根据项目需求自动配置各种服务和组件,它可以帮助开发者

    2024年02月08日
    浏览(66)
  • 解决github ping不通的问题(1024程序员节快乐!

    1024程序员节快乐!( 随便粘贴一个文档,参加活动 域名解析(域名-IP):https://www.ipaddress.com/ Ubuntu平台 github经常ping不通或者访问缓慢,方法是更改hosts文件 在hosts里添加github的ip 140.82.114.4 www.github.com 199.232.5.194 github.global.ssl.fastly.net 54.231.114.219 github-cloud.s3.amazonaws.com 可以访

    2024年01月18日
    浏览(77)
  • 重置weblogic用户密码

    weblogic安装后,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码。  版本:WebLogic Server 10.3   说明:%DOMAIN_HOME%:指WebLogic Server 域(Domain)目录   例如的域的根目录  DOMAIN_HOME=/Weblogic/Middleware/user_projects/domains/base_domain   1、为了保证操作安全,备份 %DOMAI

    2024年02月12日
    浏览(48)
  • 好用且免费的CodeWhisperer,给1024程序员节送礼来了

          国庆期间没有胆量去人从众的景点,关在家里刷手机时意外在亚马逊的User Group公众号上发现了CodeWhisperer这么个好东西(bu yao qian),以后撸代码也可以提高生产力(fang yang mo yu)了,这还不赶紧上手试一下。看官方介绍说它支持流行的IDE开发工具,包括VS Code、Intelli

    2024年02月08日
    浏览(47)
  • Ubuntu 重置 root 用户密码

    前言 虚拟机用的时间久了登录系统的时候发现 root 密码忘记了, 所以在这里写一篇文章记录一下Ubuntu 系统下 root 密码忘记的解决方案,经过测试, 理论上来说这个方法适用于 Ubuntu 22.04 和 Ubuntu 18.04 以及 Ubuntu 16.04 等各种 Ubuntu 系统版本的系统来重置 root 用户密码,当前在 Ubuntu

    2024年02月08日
    浏览(45)
  • linux重置root用户密码

    第 1 步:重启系统编辑内核参数 第 2 步:找到 linux 这行,在此行末尾空格后输入rd.break  (End键也可直接进入行尾) 成功后显示页面为: 第 3 步:查看。可选(该步骤可省略) 命令为 :mount | grep sysroot 第 4 步:以读写方式挂载sysroot( 这里 sysroot 是以只读的形式挂载的,所

    2024年02月05日
    浏览(43)
  • CentOS 重置 root 用户密码

    前言 虚拟机用的时间久了登录系统的时候发现 root 密码忘记了, 所以在这里写一篇文章记录一下CentOS8 root 密码忘记的解决方案,经过测试,这个方法适用于 CentOS7 和 CentOS 8 系统用来重置 root 用户密码. CentOS 重置 root 用户密码 编辑 grub 菜单 首先在 系统启动的grub界面 按下子母键

    2024年02月11日
    浏览(45)
  • 忘记gitlab的root用户密码(重置gitlab的root用户密码)

    目录 一、服务简介  二、解决思路 1、首先登录gitlab服务器执行以下命令:  2、通过命令查找,确定用户为“root” 3、将root用户密码重置为admin123! 4、保存重置信息,并结束          GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭

    2023年04月08日
    浏览(46)
  • 【linux】linux用户重置修改密码

    修改密码是操作系统最常见的操作。 linux操作系统,通过passwd 系统命令来修改密码。 其中普通用户只能修改自己用户的密码,如下: 但是root用户就不同了,root用户是管理员用户,权限顶格。 用root用户运行passwd修改当前用户的密码, passwd user_name可以设置或修改任何用户的

    2024年02月16日
    浏览(33)
  • @zabbix web登录忘记密码(用户密码重置及反解)

    zabbix部署后,使用默认的Admin账户登录 Admin/zabbix,新部署搭建的zabbix环境,密码都为Admin 假设: 1》web账户密码忘记了,且zabbix无存档,这是就把自己关外面了,无法进入到zabbix工作台里,这也是极端的 情况 2》管理员用户禁用登录,创建的普通用户,权限不够,无法操作所

    2024年02月15日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包