Utilisez nodejs+redis+mysql pour développer un mot de passe oublié - définissez le mot de passe utilisateur et modifiez l'interface du mot de passe
Créer une interface de mot de passe oublié
http://127.0.0.1:8081/api/user/v1/forget
Créez l'adresse de l'interface dans le dossier du routeur
const express = require('express')
const router = express.Router()
const UserController = require('../controller/UserController')
router.post('/forget',UserController.forget)
module.exports = router
Exclure l'interface dans 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/,
]
}))
Oubliez la couche de contrôle des mots de passe et le développement logique de la couche de données
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
Vous avez terminé, prêt à tester sur apifox