📅  最后修改于: 2023-12-03 15:30:41.049000             🧑  作者: Mango
在开发 Web 应用程序时,有时需要在不同页面之间保持用户登录状态,并在需要时访问该状态。一个常见的解决方案是使用 cookie 会话,它在客户端存储数据,以便在多个请求之间使用。
Express 是一个流行的 Node.js Web 框架,它提供了处理 cookie 会话的集成支持。
要使用 cookie 会话,需要安装 express-session
和 cookie-parser
。
npm install express-session cookie-parser
接下来,在你的 Express 应用程序中,你需要按照以下方式设置 cookie-parser 中间件:
const express = require('express');
const app = express();
const cookieParser = require('cookie-parser');
app.use(cookieParser());
然后,你需要设置 express-session 会话中间件,如下所示:
const express = require('express');
const app = express();
const session = require('express-session');
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true
}));
在这里,我们使用 secret
选项指定一个字符串,用于加密会话数据。你还可以设置 resave
和 saveUninitialized
选项。
现在,你已准备好在会话中保存数据。可以使用带有会话对象的 req
对象,以便访问会话数据。例如,以下代码将在会话中设置 username
值:
app.get('/login', function(req, res) {
req.session.username = 'johndoe';
res.send('You are logged in!');
});
你可以使用 req.session.username
从任何其他请求中访问此值。
你可以使用 delete
关键字从会话中删除数据。例如,以下代码将从会话中删除 username
值:
app.get('/logout', function(req, res) {
delete req.session.username;
res.send('You are logged out!');
});
有时,你可能需要保护只有经过身份验证的用户才能访问的路由。你可以使用以下代码检查用户是否经过身份验证,并相应地返回错误或成功响应:
app.get('/profile', function(req, res) {
if (!req.session.username) {
res.status(401).send('You are not logged in!');
} else {
res.send('Welcome to your profile page!');
}
});
使用 Express Cookie 会话非常简单,它可以让你轻松地在应用程序中跟踪用户身份验证状态和其他重要数据。