code验证有问题

来源:8-8 注册&登录(1)

xxxxxbilibli

2018-10-31

无论验证码输什么 只要是4位 都能注册成功 

http://img.mukewang.com/szimg/5bd95d690001862c03430181.jpg

代码都是复制源码的。

打印服务端返回的msg,返回‘注册成功’

http://img.mukewang.com/szimg/5bd95d870001887112500729.jpg

解决方法:

这段注册成功的代码应该在判断code相等的情况下执行,不然无法判断验证码为空,或者验证码错误。

  if (code) {
    const saveCode = await Store.hget(`nodemail:${username}`, 'code')
    const saveExpire = await Store.hget(`nodemail:${username}`, 'expire')
    if (code === saveCode) {
      if (new Date().getTime() - saveExpire > 0) {
        ctx.body = {
          code: -1,
          msg: '验证码已过期,请重新尝试'
        }
        return
      }
      // 判断注册成功与否应该放在这里
      // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      let user = await User.find({username})
      if (user.length) {
        ctx.body = {
          code: -1,
          msg: '已被注册'
        }
        return
      }
      let nuser = await User.create({username, password, email})
      if (nuser) {
        let res = await axios.post('/users/signin', {username, password})
        if (res.data && res.data.code === 0) {
          ctx.body = {
            code: 0,
            msg: '注册成功',
            user: res.data.user
          }
        } else {
          ctx.body = {
            code: -1,
            msg: 'error'
          }
        }
      } else {
        ctx.body = {
          code: -1,
          msg: '注册失败'
        }
      }
    } else {
      ctx.body = {
        code: -1,
        msg: '请填写正确的验证码'
      }
    }
  } else {
    ctx.body = {
      code: -1,
      msg: '请填写验证码'
    }
  }


写回答

2回答

Jam_Lee

2020-01-18

感谢楼主,这个问题困扰了我半天,总算解决了

0
0

快乐动起来呀

2018-10-31

每次验证码发送出去都会保存,验证的时候要去对比,你检查下存储的对吗,取出来的和存储的与发送的是否一致,调试下看看

0
2
xxxxxbilibli
源码 app/server/interface/users.js,第39~67行,是否应该写在第26到27行之间呢?麻烦你看下吧。
2018-10-31
共2条回复

Vue全家桶+SSR+Koa2全栈开发美团网

整合大前端8项技术,全面晋级全栈工程师,毕设/面试作品

2445 学习 · 1638 问题

查看课程