我在ExpressJS应用程序中使用PassportJS:
在app.js
中,我有仅限管理员和requiresAdmin
功能的路线:
var requiresAdmin = function() {
return [
ensureLoggedIn('/login'),
function(req, res, next) {
if (req.user && req.user.admin === true){
next();
}else{
res.send(401, 'Unauthorized');
}
}
];
};
app.all('/admin/*', requiresAdmin());
我创建了另一个返回JSON对象的路由。也可以通过管理员访问。
app.all('/api/admin/*', requiresAdmin());
如果用户未登录或非管理员,如何使用上述方法返回JSON?感谢
答案 0 :(得分:1)
我会使用以下内容替换你的res.send来使用Express.js内容协商功能:
res.format({
'text/plain': function(){
res.send(401, 'Unauthorized');
},
'application/json': function(){
res.send(401, { message: 'Unauthorized' });
}
});
此处有更多信息:http://expressjs.com/api.html#res.format
不要忘记在res.send
内替换ensureLoggedIn
,并记住您可能需要强制您的客户在其http请求中发送正确的accept
标头。