Node.js 如何使用会话变量
在本文中,我们将学习如何在Node.js中使用会话变量。
Node.js中的会话管理:
- 会话管理是一种跟踪用户状态(数据)的技术。
- 如果客户端向服务器发送请求,则其后跟HTTP协议。
- HTTP是一种无状态协议。
- 无状态协议意味着服务器会忘记客户端,并将每个请求视为新请求。
- 状态由会话管理技术管理。
会话管理中的Cookies:
- Cookie是一种会话管理技术。
- Cookies以 键值对 的形式存储在客户端浏览器中的请求期间。
- Cookie是服务器或网站用来记住你的一种方式。
- Cookie是由服务器发送到浏览器的小 文本 数据。
- 当浏览器向服务器发送请求时,服务器会在服务器端创建一个会话。当服务器响应浏览器时,Cookie会随响应一起发送至浏览器。
- 之后,如果用户向服务器发送请求,Cookie将随请求一起发送。
- 例如,当你入学时,你必须注册,注册后会给你一个ID或收据。第二次去学校时,你可以通过你的ID或收据被识别,不需要再次注册。
让我们举几个示例来更好地理解这个概念:
- 访问次数。
- 登录注销页面。
示例1: 客户端的访问计数器。当用户访问网站时,将为用户分配一个 cookie 并创建一个会话。下次用户访问时,通过cookie识别用户并更新变量。
“访问次数”所需的步骤如下:
步骤1: 在终端中使用以下命令初始化项目
npm init
步骤2: 在终端中安装以下所需模块。
npm install express express-session cookie-parser
步骤3: 按照下面的方式创建一个名为 app.js 的文件。
项目结构图像: 您的项目结构应该如下:
步骤4: 在 app.js 文件中写下以下代码。
const express = require("express");
const session = require("express-session");
const cookieParser = require("cookie-parser");
const PORT = 4000;
const app = express();
// Initialization
app.use(cookieParser());
app.use(session({
secret: "amar",
saveUninitialized: true,
resave: true
}));
app.get('/', (req, res) => {
if (req.session.view) {
// The next time when user visits,
// he is recognized by the cookie
// and variable gets updated.
req.session.view++;
res.send("You visited this page for "
+ req.session.view + " times");
}
else {
// If user visits the site for
// first time
req.session.view = 1;
res.send("You have visited this page"
+ " for first time ! Welcome....");
}
})
// Host
app.listen(PORT, () =>
console.log(`Server running at ${PORT}`));
步骤4: 在终端中使用以下命令运行该文件。
node app.js
输出: 每次访问同一页面,计数器的次数都会增加。
示例2:
假设有三个链接“登录”、“注销”和“个人资料”。在用户登录之前,用户不能直接访问个人资料。当用户登录时,会创建会话,并在注销后销毁会话。
方法:
我们要创建一个登录注销页面。当用户登录时,我们将其放入会话中,并在整个会话期间保持用户在该会话中。当用户注销时,我们将销毁会话。
“登录注销页面”所需的步骤如下:
步骤1:
初始化项目并创建 package.json 文件。
npm init
步骤2: 为项目安装以下必需的模块。
npm i express express-session cookie-parser
步骤3: 按照下面所示创建一个 app.js 文件
项目结构图片: 您的项目结构应该如下所示:
步骤4: 在给定的文件中写下以下代码。
const express = require("express");
const app = express();
const session = require("express-session");
const cookieParser = require("cookie-parser");
const PORT = 4000;
// Initialization
app.use(cookieParser());
app.use(session({
secret: "amar",
saveUninitialized: true,
resave: true
}));
// User Object
const user = {
name: "Amar",
Roll_number: 43,
Address: "Pune"
};
// Login page
app.get("/login", (req, res) => {
req.session.user = user;
req.session.save();
return res.send("Your are logged in");
});
app.get("/user", (req, res) => {
const sessionuser = req.session.user;
res.send(sessionuser);
});
// Logout page
app.get("/logout", (req, res) => {
req.session.destroy();
res.send("Your are logged out ");
});
// Host
app.listen(PORT, () => console.log(`Server at ${PORT}`));
步骤5: 在终端中使用以下命令运行该文件。
node app.js
输出: