快递会话管理

时间:2012-12-25 00:00:32

标签: express

    var express = require('express');
    var app = express();
        app.use(express.cookieParser('keyboard 123'));

app.get('/', function(req, res){
  res.sendfile('./login.html');
});

        app.use(express.session());

            app.post('/login', function(req, res){

            console.log(req.body);
            if (req.session.user) {
                req.session.user=req.body.username;
              } else {
                req.session.user="test";

              }

        });




<form id="myform" action="/login" method="post" enctype="application/x-www-form-urlencoded">
  <input type="text" name="username" id="mytext" />
  <input type="submit" id="mysubmit" />
</form>

我正在尝试理解并使用快速节点js。 在这里,我有一个发布的表格。 我的理解是: 第一次没有cookie(会话)可用。 所以,当我们收到请求时:req.session.user将为空。 所以当我们送200 OK。这个req.session.user cookie将被创建并存储在本地浏览器中。然后在所有req中这个req.session对象将被发送是正确的吗?

现在的问题是:我总是将req.body.username作为undefined。 我在登录页面中定义了相同的用户名。 我已经尝试过console.log(req.body),它总是未定义的。 如果我没有会话,身体部分就会起作用。

如果我理解正确并且此代码中的问题是什么,你能澄清我吗?我真的有问题理解会话的概念以及如何在快速框架工作中使用它

1 个答案:

答案 0 :(得分:1)

您似乎对请求和响应感到困惑。如果您发布更大的代码摘录,我们可以提供更详细的帮助,但这是我对您的误解的看法。

  • 当POST /登录到达时,您可以检查是否设置了req.session.user。如果是这样,用户已经登录但是再次登录,这不是通常情况,但您可以执行res.send('You are already logged in as ' + req.session.user);
  • 之类的操作
  • 如果未设置req.session.user,则用户正在登录。通常您会确认用户知道正确的密码,但对于您的小测试应用,您只需执行req.session.user = req.body.username并回复使用`res.send('您已登录为'+ req.session.user);例如。

另外,请确保在应用程序中正确配置了cookieParser,session和bodyParser中间件。