// 导入 express 和 cookie-session 中间件
const express = require('express');
const session = require('cookie-session');
// 创建 express 应用
const app = express();
// 配置 session 中间件
app.use(session({
name: 'session', // 设置 cookie 名称,默认为 connect.sid
keys: ['secret1', 'secret2'], // 设置签名的密钥,数组中可以有多个密钥
maxAge: 24 * 60 * 60 * 1000 // 设置 session 的有效时间,单位毫秒
}));
// 登录验证的处理函数
app.post('/login', (req, res) => {
// 假设这里是从请求数据中获取用户名和密码的逻辑
const user = { username: 'user', password: 'pass' };
const { username, password } = req.body;
// 用户名和密码验证
if (username === user.username && password === user.password) {
// 验证成功,将用户信息存储到 session 中
req.session.user = user;
res.json({ status: 'success', message: '登录成功' });
} else {
// 验证失败
res.json({ status: 'error', message: '登录失败' });
}
});
// 需要验证登录的接口
app.get('/protected', (req, res) => {
// 检查 session 中是否有用户信息
if (req.session.user) {
// 用户已登录,可以访问受保护的资源
res.json({ status: 'success', message: '访问受保护资源成功' });
} else {
// 用户未登录,拒绝访问
res.json({ status: 'error', message: '需要登录' });
}
});
// 启动服务器
app.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000/');
});
这段代码演示了如何在 Node.js 的 Express 框架中使用 cookie-session 中间件实现登录验证。在登录接口中,我们验证用户名和密码,如果成功,我们将用户信息存储到 session 中。在受保护的接口中,我们检查 session 来确定用户是否已经登录。这个例子简单地展示了如何使用 cookie-session 来保护网页应用的部分内容,实际应用中应该有更复杂的安全措施。