繁体   English   中英

如何在expressjs /会话NodeJS中保存数据

[英]How to save data in expressjs/session NodeJS

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

一旦我的用户登录(在POST信息和DB之间完成验证),我想使用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提取会话时,该会话为空...请发送帮助

您的代码似乎只是正确的一些更改

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

别忘了先登录,因为您将会话值存储在那儿,然后它肯定会显示带有电子邮件和密码键的对象。 让我知道您是否遇到任何问题。

我知道你没有问这个问题,但是我会以两种方式陈述它,不再建议在节点中使用会话,JSON Web令牌几乎就是宝座。本质上,这是JSON格式的签名数据。 由于已签名,因此收件人可以验证其真实性。 因为它是JSON,所以权重很小。

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

  • 用户呼叫认证服务,通常发送用户名和密码。
    • 身份验证服务以签名的JWT进行响应,该JWT指示用户是谁。
    • 用户请求访问将令牌发回的安全服务。
    • 安全层检查令牌上的签名,如果它是真实的,则授予访问权限。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM