使用PassportJS防止API

时间:2015-03-30 12:16:29

标签: javascript node.js passport.js

我有如下的终点:

app.post(api + '/channels/:channel_id/albums', user.ensureAuthenticated, album.create);
app.get(api + '/channels/:channel_id/albums/published', user.ensureAuthenticated,album.publishedAlbums);
app.get(api + '/channels/:channel_id/albums', user.ensureAuthenticated, album.findAll);

这一切都运行正常,但是将user.ensureAuthenticated放在每个端点让我感到很烦恼,有没有什么方法可以让user.ensureAuthentication立刻为所有人设置?

对于ex:Laravel有像beforeAuth这样的选项,你可以创建一个if和inside,你把所有要保护的端点放在一起。

喜欢前:

if(user.ensureAuthenticated){
  // endpoints declariations
}else{
  // redirect to login
}

感谢名单

1 个答案:

答案 0 :(得分:1)

你会在这里找到答案: Only allow passportjs authenticated users to visit protected page

特别是这种代码:

//checks to be sure users are authenticated
app.all("*", function(req, res, next){
if (!req.user) 
    res.send(403);
else
    next();
});

所有端点都将受到保护。