javascript - captcha存入session,login判断时为undefined?

查看:115
本文介绍了javascript - captcha存入session,login判断时为undefined?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

// app.js
app.use(session({
  name: 'mysite',
  secret: 'mysite',
  cookie: 2592000000,
  store: new MongoStore({
    url: 'mongodb://localhost:27017/ad_system'
  })
}));

// captcha
exports.captcha = (req, res, next) => {
  var ary = ccap.get();
  var text = ary[0];
  var buf = ary[1];
  req.session.captcha = text;
  res.end(buf);
};

// login 判断captcha部分代码
exports.login = (req, res, next) => {
  var json = {},
      username = req.body.username,
      password = req.body.password,
      captcha = req.body.captcha,
      rememberMe = req.body.rememberMe;

  if (username === '' || password === '') {
    json = {
      status: 0,
      msg: '请输入用户名和密码'
    };
    return res.json(json);
  }
  console.log(req.session.captcha); // undefined
  if (req.session.captcha !== captcha) {
    json = {
      status: -1,
      msg: '请输入正确的验证码'
    }
    return res.json(json);
  }
  User.findOneAsync({
    username,
    password: crypts.sha256(password)
  })
  .then((result) => {
    if (result) {
      var id = result._id,
          remember_me = req.body.remember_me ? 2592000000 : 86400000,
          token = crypts.sha256(id + '|' + username)
      res.cookie('user', token, { maxAge: remember_me });
      res.cookie('userid', token, { maxAge: remember_me });
      res.cookie('username', token, { maxAge: remember_me });
      req.session.user = username;
      req.session.isLogin = true;
      json = {
        status: 1,
        msg: '登录成功',
        token: token
      }
    } else {
      json = {
        status: 0,
        msg: '用户名密码错误'
      }
    }
    res.json(json)
  }).catch(err => {
    res.json({
      status: 0,
      msg: err.toString()
    })
  })
};

// routes
router.post('/login', (req, res, next) => {
  user.login(req, res, next);
});

router.get('/captcha', (req, res, next) => {
  user.captcha(req, res, next);
});

为什么req.session.captcha是undefined?

解决方案

结贴了,是因为我用的vue-cli的proxyTable转发了,接口是通过这个转发了,但captcha是img设置src直接访问,所以造成两个session了。

这篇关于javascript - captcha存入session,login判断时为undefined?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆