Use nodejs+redis+mysql to develop forgotten password - set user password and modify password interface
Create a forgotten password interface
http://127.0.0.1:8081/api/user/v1/forget
Create the interface address in the router folder
const express = require('express')
const router = express.Router()
const UserController = require('../controller/UserController')
router.post('/forget',UserController.forget)
module.exports = router
Exclude the interface in app.js
app.use(jwt({
secret: jwtSecretKey, algorithms: ['HS256'] }).unless({
path: [
/^\/api\/notify\/v1/,
/^\/api\/user\/v1\/register/,
/^\/api\/user\/v1\/forget/,
/^\/api\/wxLogin\/v1/,
]
}))
Forget password control layer and data layer logic development
const UserService = require('../service/UserService.js')
const UserController = {
forget:async(req,res)=>{
let handleRes = await UserService.forget(req)
res.send(handleRes)
}
}
module.exports = UserController
const DB = require('../config/sequelize')
const redisConfig = require('../config/redisConfig')
const RandomTool = require('../utils/randomTool')
const SecretTool = require('../utils/SecretTool')
const BackCode = require('../utils/BackCode')
const codeEnum = require('../utils/CodeEnum')
const UserService = {
forget:async(req)=>{
let {
phone,password,code} = req.body
let codeExit = await redisConfig.exists('change:code:'+phone)
if(!codeExit) return BackCode.buildError({
msg:'请先获取手机验证码'})
let codeRes = await redisConfig.get('change:code:'+phone)
if(!(code==codeRes)) return BackCode.buildError({
msg:'手机验证码输入不正确'})
let pwd = SecretTool.md5(password)
await DB.Account.update({
pwd},{
where:{
phone}})
return BackCode.buildSuccessAndMsg({
msg:'密码修改成功'})
}
}
module.exports = UserService
You're done, ready to test on apifox