Feathersjs管理员角色(或带有auth检查的羽毛中间件)

时间:2017-03-02 23:01:13

标签: node.js express feathersjs

我对feathersjs auth hooks(或其他)有一个愚蠢的问题。这是我的评论代码:

  app.get('/admin', function (req, res) {

  // i'd like to check here if (req.connection.isAdmin) then render page

    res.render('admin/admin.html', {
      title: 'admin'
    })
  });

我无法找到我可以为chek用户实现admin-role的用户身份验证挂钩的位置。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您应该可以使用我在其他问题中发布的示例:Feathers Js Restrict Access To Page on Server Side

在您的情况下,您需要做一些逻辑来查看用户是否是管理员。默认情况下,Feathers为您提供的JWT令牌只包含userId。您可以检索用户记录以检查用户是否是管理员。

这里有一个你要放在jwt.verify块中的例子:

jwt.verify(token, secret, function(err, decoded) {
  if (err) {
    return res.status(401).send('You are not authorized to view that page.');
  }
  app.service('users')
    .get(decoded.id) // Or _id if you're using MongoDB
    .then(user => {
      if (user.isAdmin) {
        res.render('admin/admin.html', {
          title: 'admin'
        })
      } else {
        return res.status(401).send('You are not authorized to view that page.');
      }
    })
});

feathers-authentication的下一个版本中可以向服务器上的JWT添加值,因此,对于管理员,您可以向JWT有效内容添加isAdmin属性。一旦预发布版本发布,这将是相当简单的。在那之前,上述可能是最好的方式。