Express 中的 Session 是什么以及如何在 Node.js 中使用
众所周知,HTTP 是一种无状态协议。 如果用户之前已经到达,我们需要识别请求并将每个请求与用户相关联。 因此,为了跨多个页面持久保存数据,我们使用会话。
特快专场
要在 express 框架中创建会话,请使用 express-session 包。 express-session 模块提供了可以设置和获取会话值的方法和属性。
快速会话在 Node js Web 应用程序中用于维护用户的状态。 要安装 express-session,请在终端或命令行工具中键入 npm install express-session –save 命令。
会话最常用的场景是身份验证系统。 当用户登录到任何系统时,他们可以根据他们的 ID 查看他们的活动。 因此,我们需要将用户的 ID 存储到会话中,然后查询该 ID 以显示有关该用户的不同信息。
我们将以表单验证为例。 我们将通过前端的会话显示验证消息。 那么让我们一步一步开始吧。
步骤 1:创建一个文件夹并安装依赖项。
创建项目文件夹,进入该文件夹,然后点击以下命令。
npm init
它将创建一个 package.json 文件并在其中写入以下代码。
{ "name": "sessionexpress", "version": "1.0.0", "description": "Express Sesssion Tutorial", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "nodemon server" }, "dependencies": { "body-parser": "*", "cookie-parser": "*", "express": "*", "express-hbs": "*", "path": "*", "express-session": "*", "express-validator": "*" }, "devDependencies":{ "nodemon":"*" }, "keywords": [ "Express", "Node.js", "Session" ], "author": "Krunal Lathiya", "license": "ISC" }
它将安装 Express Web 框架、express-session 和其他软件包。
第 2 步:制作 server.js 文件并启动节点服务器。
在根目录中,创建一个名为 server.js 的文件。
// server.js const express = require('express'); const cookeParser = require('cookie-parser'); const bodyParser = require('body-parser') ; const hbs = require('express-hbs'); const expressValidator = require('express-validator') ; const session = require('express-session') ; const app = express(); const PORT = 3000; app.get('/', function(req, res){ res.send('hello'); }); app.listen(PORT, function(){ console.log('Server is running on',PORT); });
转到 http://localhost:3000。 您可以看到 Node.js 服务器正在端口:3000 上运行。
下一步是为我们的应用程序设置视图引擎和中间件。 将以下代码添加到 server.js 文件中。
// server.js app.use(express.static('public')); app.engine('hbs', hbs.express4({ partialsDir: __dirname + '/views/partials' })); app.set('view engine', 'hbs'); app.set('views', __dirname + '/views'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(cookeParser()); app.use(session({ secret: 'krunal', resave: false, saveUninitialized: true, })); app.use(expressValidator());
我们还没有创建 views 文件夹,但我们稍后会创建。 我们使用 Express Handlebars 作为模板引擎。 但是,当然,您也可以使用 EJS。 这里我们使用了 body-parser 中间件,也使用了 cookie-parser。
然后使用 express session,它需要一个对象作为参数来初始化它。 然后使用 flash 包显示错误或成功消息。
第 3 步:制作所需的目录。
在根文件夹中,创建一个名为 views 的目录,并在该形状中创建一个名为 add.hbs 的文件。 此外,在 views 文件夹中创建一个名为 partials 的目录。 然后,我们可以定义 header.hbs 和 footer.hbs 文件。
另外,创建一个名为 public 的文件夹并创建一个名为 css 的文件夹并放入 bootstrap.min.css 文件。
Add Info Add User
为我们的应用程序定义路由。
在根目录下创建一个名为 routes 的文件夹,并创建一个名为 user.route.js 的文件。 我们需要在这里为我们的应用程序定义 get 和 post 路由。
// user.route.js const express = require('express'); const router = express.Router(); router.get('/', function(req, res){ res.render('add', { errors: req.session.errors }); req.session.errors = null; }); module.exports = router;
现在,我们需要将此路由导入到 server.js 文件中。
// server.js const user = require('./routes/user.route'); app.use('/user',user);
转到 http://localhost:3000/user。 你会看到这样的表格。
第 4 步:服务器端验证。
在 routes >> user.route.js 文件中,粘贴以下代码。 我们刚刚定义了发布路线。
// user.route.js router.post('/add', function(req, res) { let name = req.body.name; let email = req.body.email; req.checkBody('name', 'Name is required').notEmpty(); req.checkBody('email', 'Email is required').notEmpty(); req.checkBody('email', 'Please enter a valid email').isEmail(); const errors = req.validationErrors(); if(errors){ req.session.errors = errors; res.redirect('/user'); } else{ req.session.success = true; res.redirect('/'); } });
因此,如果有任何错误,它会将它们存储在会话中,并将我们重定向到带有错误的添加视图。
现在,编写 add.hbs 文件以显示错误。
{{# if errors }} {{# each errors }}{{ this.msg }}
{{/each}} {{/if}}
现在,转到 http://localhost:3000/user。 如果您提交的表单没有任何值,它会将值存储在会话中并给我们一个错误。
所以这就是我们可以使用会话的方式。 我已经把代码放到了 Github 上。 这就是 Express Session 教程。
在 Github 上叉我