正确的设置访问权限的方法?

时间:2018-02-15 18:59:08

标签: javascript node.js express

我正在创建一个用户管理系统 - 但我现在发现自己在每个路由器基础上检查用户类型。

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吗?

1 个答案:

答案 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