我正在创建一个用户管理系统 - 但我现在发现自己在每个路由器基础上检查用户类型。
router.get('/admin/settings', (req, res) => {
if(admin) {
//Proceed.
}
}
router.get('/admin/users', (req, res) => {
if(admin) {
//Proceed.
}
}
有更好的方法吗?我不能设置这样的路线吗?
router.get('/admin*', (req, res) => {
if(!admin) {
res.status(404).send('Not found')
}
}
(我已尝试但未成功,感觉它与其他路线发生冲突)
另外,类似的说明。我应该如何处理拒绝用户访问脚本?我发送404或403吗?
答案 0 :(得分:2)
您可以使用Express中间件功能:
router.use(function(req, res, next) {
if(admin) {
return next();
}
// We fail closed
return res.status(403).send('Forbidden');
});
// This won't get called if the middleware doesn't call next()
router.get('/admin/settings', (req, res) => {
// Do stuff
}
此处,仅当用户为next()
时,我们才会呼叫admin
,这样可以继续呼叫。在此中间件之后添加的任何路由都将受到保护。
另外,类似的说明。我应该如何处理拒绝用户访问脚本?
此处的403是相应的代码,但如果您希望隐藏未经授权的客户端的路由,也可以使用404。我建议reading up on what each code is designed for。