当使用 Node.js 的 Express 框架进行 Web 开发时,我们通常需要使用 session 来存储用户登录状态等信息。这里是一个 Node.js session 的简单使用攻略。
安装相关依赖
Session 是通过中间件实现的,我们需要安装 session 相关依赖:
npm install express-session
引入 session 中间件
在应用程序中引入 session 中间件:
const session = require('express-session');
app.use(session({
secret: 'my-secret-key',
resave: false,
saveUninitialized: false
}));
其中,secret
是用于加密 session ID 的密钥;resave
表示是否每次请求都重新保存 session;saveUninitialized
表示是否保存未初始化的 session 对象。
使用 session
在请求处理中可以使用 req.session
访问 session 对象。
例如,我们可以在用户登录页面处理 POST 请求时设置 session:
app.post('/login', function(req, res) {
// ...
req.session.username = 'my-username';
// ...
});
然后,在其他的请求处理中,就可以使用 req.session.username
访问该 session 对象的值了。
示例
下面是一个基于 Express 的示例代码,展示如何使用 session 实现一个简单的登录系统。
const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const app = express();
// 使用 session 中间件
app.use(session({
secret: 'my-secret-key',
resave: false,
saveUninitialized: false
}));
// 使用 bodyParser 中间件解析 POST 请求体
app.use(bodyParser.urlencoded({ extended: false }));
// 登录页面
app.get('/login', function(req, res) {
res.send(`
<form method="POST" action="/login">
<label>
Username:
<input type="text" name="username">
</label>
<br>
<label>
Password:
<input type="password" name="password">
</label>
<br>
<button type="submit">Login</button>
</form>
`);
});
// 处理登录请求
app.post('/login', function(req, res) {
const { username, password } = req.body;
// 登录验证
if (username === 'my-username' && password === 'my-password') {
// 设置 session
req.session.username = 'my-username';
res.redirect('/profile');
} else {
res.send('Invalid username or password');
}
});
// 个人资料页面
app.get('/profile', function(req, res) {
// 检查登录状态
if (!req.session.username) {
res.redirect('/login');
} else {
res.send(`
<p>Welcome, ${req.session.username}!</p>
<p><a href="/logout">Logout</a></p>
`);
}
});
// 处理登出请求
app.get('/logout', function(req, res) {
// 销毁 session
req.session.destroy();
res.redirect('/login');
});
app.listen(3000);
该示例中实现了一个简单的登录系统,包括登录页面、个人资料页面和登出功能。在登录验证通过后,会设置一个 session,用于保存用户的登录状态,然后重定向到个人资料页面。在个人资料页面中,会检查登录状态,只有在用户已登录时才会展示欢迎信息和登出链接。在登出时,会销毁 session,实现登出功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs 的 session 简单使用 - Python技术站