node.js - 如何只允许管理员访问 Nodejs `AdminBro` 中的管理页面
问题描述
如何只允许管理员访问 Admin 页面AdminBro
?Nodejs
我想要的只是让管理员有权访问该 adminBro
页面,是否有任何特定方法可以完成此操作?
我在我的app.js
文件中做了这个,但它不起作用
app.get("/admin", function (req, res, next) {
res.locals.login = req.user;
if (res.locals.login.roles == "admin") {
app.use("/admin", adminRouter);
} else {
res.redirect("/");
}
});
解决方案
您不能使用 new app.use
inside app.get
,因为(req, res, next)
已经使用了。你有两个选择:
- 您在 if 条件正文中的路线
if (res.locals.login.roles === 'admin') {
// your admin route logic
res.send('admin page')
} else {
res.redirect('/')
}
- 我习惯使用像这样的小型中间件功能:
const isAdmin = (req, res, next) => {
if (req.user.roles === 'admin') {
return next();
}
res.redirect('/');
};
然后你以这种方式在任何一条路线中使用它:
app.get('/admin', isAdmin, adminRouter)
推荐阅读
- sql - PostgreSQL percentile_cont 为所有百分位数返回相同的值
- python - 为什么for循环中的Python范围函数运行两次
- cassandra - 基准测试 Cassandra 4 节点集群的配置是什么
- angular - 带有内联编辑表的 Angular ExpressionChangedAfterItHasBeenCheckedError
- expect - 编写Expect的正确方法是什么?
- c++ - HttpSendRequest 在 Windows 2016 服务器上有时非常慢,在 Windows 2008 服务器上工作正常
- php - 从 Google Translate API 获取翻译作为 PHP 变量
- selenium-webdriver - 如何在以下场景中使用 selenium webdriver 获取 WebElements 的计数:
- excel - 为什么这个 IF 公式不起作用?
- sql - 有多个传入代码的 SQL 查找表