快速会话管理 var express=require('express'); var-app=express(); app.use(express.cookieParser(“键盘123”); app.get('/',函数(req,res){ res.sendfile('./login.html'); }); app.use(express.session()); app.post('/login',函数(req,res){ 控制台日志(请求主体); if(请求会话用户){ req.session.user=req.body.username; }否则{ 请求会话用户=“测试”; } });
我正在尝试理解和使用express node js。 这里我有一张表格,可以邮寄。 我的理解是: 第一次没有可用的cookie(会话)。 因此,当我们收到请求时:req.session.user将为空。 所以当我们发送200行。将创建此req.session.user cookie并将其存储在本地浏览器中。?随后在所有的req中,这个req.session对象将被发送,对吗 现在的问题是:我总是得到未定义的req.body.username。 我在登录页面中定义了相同的用户名。 我尝试过console.log(req.body),但它总是未定义的。 如果我没有疗程,身体部分就会起作用快速会话管理 var express=require('express'); var-app=express(); app.use(express.cookieParser(“键盘123”); app.get('/',函数(req,res){ res.sendfile('./login.html'); }); app.use(express.session()); app.post('/login',函数(req,res){ 控制台日志(请求主体); if(请求会话用户){ req.session.user=req.body.username; }否则{ 请求会话用户=“测试”; } });,express,Express,我正在尝试理解和使用express node js。 这里我有一张表格,可以邮寄。 我的理解是: 第一次没有可用的cookie(会话)。 因此,当我们收到请求时:req.session.user将为空。 所以当我们发送200行。将创建此req.session.user cookie并将其存储在本地浏览器中。?随后在所有的req中,这个req.session对象将被发送,对吗 现在的问题是:我总是得到未定义的req.body.username。 我在登录页面中定义了相同的用户名。 我尝试过cons
你能澄清我的理解是否正确,以及此代码中的问题是什么吗。我在理解session的概念以及如何在express frame work中使用它时遇到了一些问题您似乎混淆了请求和响应。如果您发布了一个更大的代码摘录,我们可以提供更详细的帮助,但这里是我对您的误解的看法
- 当POST/login到达时,您可以检查是否设置了
。如果是这样,用户已经登录,但再次登录,这不是常见情况,但您可以执行类似于req.session.user
res.send的操作('您已经以'+req.session.user'身份登录)代码>
- 如果未设置
,则用户正在登录。通常,您会确认用户知道正确的密码,但对于您的小测试应用程序,您只需按照您的req.session.user
进行操作,并以“res.send”(您已以“+req.session.user”的身份登录);比如说req.session.user=req.body.username
另外,只需确保在应用程序中正确配置了cookieParser、session和bodyParser中间件。谢谢peter。我更新了完整的代码。我没有任何代码。我正在寻找的是在控制台打印。我没有得到控制台日志(请求主体)的任何打印数据;2) 因此,当我设置了cookie和all时,而不是当我响应req.session.user时,浏览器将自动地将req.session作为cookie并在本地更新它?这是我感到困惑的部分,那是不完整的代码。您的
require
语句在哪里?您是否确实告诉express使用bodyParser
中间件?我认为你可能会犯一些容易纠正的错误,但由于你不会发布完整的代码示例,我无法帮助你。我添加了完整的代码。这里req.body总是空的..这是第一个问题,这一行:app.use(express.bodyParser())
这是一个中间件,其工作是为您自动填充req.body
。您需要真正了解您正在编写的代码的功能。你把每个中间件都弄糊涂了。bodyParser
的工作是为您解析传入的请求并填充req.body
。session
中间件将为您填充req.session
,但它不会在cookie中存储会话ID以外的数据。但是,您可以将数据存储在req.session
对象中,它将对您可用,但实际上只有会话ID被发送到浏览器。
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>