使用Nodejs和Express保存并获取会话或cookie不起作用

时间:2017-09-20 10:48:34

标签: node.js session express cookies client-server

我很擅长使用NodeJs和Express。我正在尝试在您登录时与用户保存会话或cookie,然后在其他一些调用中获取它。我在做什么:

server.js:我在哪里声明库并创建会话。

const session = require('client-sessions');

app.use(session({
  cookieName: 'session',
  secret: 'JLB_SECRET',
  secure: false,
  duration: 30 * 60 * 1000,
  activeDuration: 5 * 60 * 1000,
}));

login.js:用户登录的地方,这里可以很好地保存cookie或会话。

router.post('/login', function(req, res, next) {
  console.log('hacemos login', req.session);
  var users = req.body;
  if (!users.pass || !users.email) {
    res.status(400);
    return res.json({
      status: 400,
      error: 'Bad data'
    });
  }
  User.findOne({
    email: users.email,
    pass: users.pass
  }, function(err, userFound) {
    if (err || userFound === null) {
      res.status(404);
      return res.json({
        status: 404,
        error: 'User not found'
      });
    } else {
      const userToSend = userDto.serviceToDto(userFound);
      req.session.user = userToSend; // here is saved properly
      console.log('pasamos la session', req.session.user);
      return res.json({
        user: userToSend,
        token: createToken(userFound)
      });
    }
  });
});

Competences.js:我尝试在另一个电话中获取会话,但它总是空的。

router.get('/competence/user/:id', function(req, res, next) {
  console.log('veamos la sesion', req.session); //HERE IS ALWAYS EMPTY
  Competence.find({
    "idUser":  mongojs.ObjectId(req.params.id)
  }, function(err, competences) {
    if (err) {
      return res.send(err);
    }
    const competenceToSend = competenceDto.serviceListToDto(competences);
    res.statusCode = 200;
    return res.json(competenceToSend);
  });
});

有人说我做错了或怎么做?这是我得到指南的地方:https://stormpath.com/blog/everything-you-ever-wanted-to-know-about-node-dot-js-sessions

Regardssss,谢谢!

0 个答案:

没有答案