根据用户登录状态,我想提供来自SAME api端点的不同结果。使用Passport.js部分保护API端点
该用例使用的文章来自相同的API端点。因此,一些文章意味着公开,而一些私人文章。 也有特殊页面,可以查询文章列表。
例: API /用品/特/所有
这个API目前应该全部归还页数在数据库中。 但也应该过滤掉私人的结果,如果用户没有登录
随着Passport.js我只能保护整个API端点,例如:
router.get('/', auth.isAuthenticated(), controller.index);
虽然我喜欢叫从实际函数内auth.isAuthenticated()方法,如:
// Get list of articles
exports.index = function(req, res) {
Article.find(function (err, articles) {
if(err) { return handleError(res, err); }
var titles = [];
var loggedIn = false;
if (auth.isAuthenticated()) {loggedIn = true;} // NOT WORKING
for (var i = 0; i<articles.length; ++i) {
if (articles[i].role === 'loggedIn' && loggedIn) {
titles.push(articles[i].name);
} else if(articles[i].role !== 'loggedIn') {
titles.push(articles[i].name);
}
}
return res.json(200, titles);
});
};
任何想法,如何在控制器中使用Passport.js的,而不是保护整个API终点?