PassportJS,ExpressJS,NodeJS,创建具有身份验证的API

时间:2013-09-06 02:43:19

标签: json node.js express passport.js

我在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?感谢

1 个答案:

答案 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标头。