如何仅允许管理员访问 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)
已经用完了。您有两个选择:
- 您在 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)
如何只允许管理员访问 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)
已经用完了。您有两个选择:
- 您在 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)