如何在expressjs / session NodeJS中保存数据

时间:2017-04-12 07:30:28

标签: javascript node.js session express request

我有3个文件:app.js,index.js(路由),Users.js(控制器)

一旦我的用户登录(在POST信息和数据库之间完成验证),我想使用expressjs / session在会话中保存数据。

以下是我在app.js中的会话声明:

var session = require('express-session');

    app.use(session({
        resave: true,
        saveUninitialized: true,
        secret: 'trolololo'
    }));

以下是我的路线:

router.post('/login', function(req, res, next) {
    Users.login(req, res);
});

router.get('/getSessionInfos', function(req,res,next){
    console.log(req.session);
});

这是登录的控制器:

login : function(req, res){
        var formEmail = req.body.email;
        var formPassword = req.body.password;

        User.findOne({ where: {email: formEmail} }).then(function(user) {
            if(user){
              if (user.password == formPassword){
                  console.log('User connected');
                  req.session.email = formEmail;
                  req.session.password = formPassword;
                  console.log(req.session);
                  res.status(200).send('User Authentified');
              }else{
                  res.status(401).send('Invalid Password');
              }
          }else{
              res.status(401).send('Username');
          }
        });
    },

登录工作我获得了200状态,登录功能中的console.log显示了我的信息的功能。但是当我尝试从/ getSessionInfos URL获取会话时它是空的...请发送帮助

2 个答案:

答案 0 :(得分:0)

您的代码似乎只有一些更改

app.use(session({
secret : 'yourSecret',
resave : false,
saveUninitialized : false,
}));

当您在那里存储会话值时,不要忘记首先登录,然后它肯定会显示带有电子邮件和密码密钥的对象。 如果您遇到任何问题,请告诉我。

答案 1 :(得分:0)

我知道你没有问过这个问题,但是无论如何都会说明,不再在节点中推荐会话,json web令牌几乎就是王位。本质上它是一个签名的数据以JSON格式。因为它已签名,收件人可以验证其真实性。因为它的JSON重量非常小。

简单来说,JWT很酷,因为您不需要在服务器上保留会话数据以便对用户进行身份验证。

  
      
  • 用户呼叫身份验证服务,通常发送用户名和   密码。      
        
    • 身份验证服务使用签名的JWT进行响应,该JWT表示谁   用户是。
    •   
    • 用户请求访问发送令牌的安全服务。
    •   
    • 安全层检查令牌上的签名以及它是否真实   访问被授予。
    •   
  •   

你可以在npm中使用jwt-simple。