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),它总是未定义的。 如果我没有会话,身体部分就会起作用。
如果我理解正确并且此代码中的问题是什么,你能澄清我吗?我真的有问题理解会话的概念以及如何在快速框架工作中使用它答案 0 :(得分:1)
您似乎对请求和响应感到困惑。如果您发布更大的代码摘录,我们可以提供更详细的帮助,但这是我对您的误解的看法。
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中间件。