我对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的用户身份验证挂钩的位置。我怎么能这样做?
答案 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
属性。一旦预发布版本发布,这将是相当简单的。在那之前,上述可能是最好的方式。