代码作业-用户申请重置密码后端接口
来源:4-10 代码作业-忘记密码页面&接口
君莫惜555
2020-11-09 19:20:16
# 相关代码如下:
async forget (ctx) {
const { body } = ctx.request
const sid = body.sid
const code = body.captcha
const username = body.username
/**
* 1. 验证验证码是否过期或是否正确
* 2. 以邮箱为字段查询数据库,如果数据库中存在该邮箱,返回用户基本信息,如果不存在向前端返回错误
* 3. 发送验证邮件
*/
if (await utils.checkCode(sid, code)) {
if (!username) {
ctx.body = {
code: 500,
msg: '用户信息输入不正确'
}
return
}
const user = await User.findOne({ username: username })
if (user && user.password) {
// 系统中存在该用户
const key = uuidv4()
setValue(key, jwt.sign({ _id: user._id }, JWT_SECRET, { expiresIn: '30m' }), 30 * 60)
const result = await send({
type: 'reset',
data: {
key: key
},
expire: moment().add(30, 'minutes').format('YYYY-MM-DD HH:mm:ss'),
email: body.username,
user: user.nickName
})
if (result) {
ctx.body = {
status: 200,
data: result,
msg: '邮件发送成功'
}
}
} else {
ctx.body = {
code: 500,
msg: '该邮箱还没有注册,是否使用该邮箱注册'
}
}
} else {
ctx.body = {
status: 401,
msg: ['图片验证码不正确']
}
}
}
1回答
作业批改:100 分
作业评语:业精于勤,荒于嬉;行成于思,毁于随。
小伙伴,真心不错。这个逻辑不复杂,平时就要这样多动手。
相似问题