如何仅允许管理员访问 Nodejs `AdminBro` 中的管理页面

How do Allow only Admins to have access to the Admin page in Nodejs `AdminBro`

如何只允许管理员访问 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("/");
 }
});

您不能在 app.get 中使用新的 app.use,因为 (req, res, next) 已经用完了。您有两个选择:

  1. 您在 if 条件正文中的路线
if (res.locals.login.roles === 'admin') {
   // your admin route logic
   res.send('admin page')
} else {
  res.redirect('/')
}
  1. 我习惯使用像这样的小中间件功能:
const isAdmin = (req, res, next) => {
  if (req.user.roles === 'admin') {
    return next();
  }
  res.redirect('/');
};

那么你在哪条路线上使用它:

app.get('/admin', isAdmin, adminRouter)