0
    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>

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

现在的问题是:我总是将 req.body.username 设为未定义。我在登录页面中定义了相同的用户名。我已经尝试过 console.log(req.body) 并且它总是未定义。如果我没有会话,则正文部分有效。

如果我的理解是正确的,你能澄清一下吗?这段代码有什么问题。我在理解会话的概念以及如何在快速框架中使用它时遇到了真正的问题

4

1 回答 1

1

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

  • 当 POST /login 到达时,您可以检查是否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('You have been logged in as ' + req.session.user); 例如。

还要确保在应用程序中正确配置了 cookieParser、session 和 bodyParser 中间件。

于 2012-12-25T01:49:54.830 回答