使用express-session为普通用户和管理员用户创建两个不同的会话,可以通过以下步骤实现:
npm install express-session
const session = require('express-session');
const sessionStore = new session.MemoryStore();
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true,
store: sessionStore
}));
其中,secret
是用于加密会话数据的密钥,可以自定义。resave
表示是否在每次请求时强制重新保存会话,saveUninitialized
表示是否自动保存未初始化的会话。
isAdmin
会话变量:app.post('/login', (req, res) => {
// 登录验证逻辑
if (user.isAdmin) {
req.session.isAdmin = true;
} else {
req.session.isAdmin = false;
}
res.redirect('/dashboard');
});
const isAdmin = (req, res, next) => {
if (req.session.isAdmin) {
next();
} else {
res.status(403).send('Access denied');
}
};
app.get('/admin/dashboard', isAdmin, (req, res) => {
// 只有管理员用户可以访问该路由
res.render('admin-dashboard');
});
通过以上步骤,就可以为普通用户和管理员用户创建两个不同的会话,并根据会话变量来区分用户类型,实现不同的权限控制。
推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云数据库(TencentDB)。
腾讯云存储专题直播
云+社区技术沙龙[第27期]
算法大赛
北极星训练营
Elastic 实战工作坊
云+社区沙龙online [技术应变力]
云+未来峰会
云+社区技术沙龙[第28期]
云+社区技术沙龙[第11期]
云+社区技术沙龙[第9期]
领取专属 10元无门槛券
手把手带您无忧上云