例如,在Meteor中,有类似
的内容Router.plugin('ensureSignedIn');
Router.plugin('ensureSignedIn', {
except: ['home', 'atSignIn', 'atSignUp', 'atForgotPassword']
});
因此,未签名的用户无法访问除上述四个以外的其他路由。
如何在express.js中执行此操作?我也在使用passport.js。
答案 0 :(得分:13)
我不熟悉Meteor,但您可以执行以下操作,假设您希望仅向经过身份验证的用户(护照)提供页面。
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated())
return next();
else
// Return error content: res.jsonp(...) or redirect: res.redirect('/login')
}
app.get('/account', ensureAuthenticated, function(req, res) {
// Do something with user via req.user
});
ensureAuthenticated
函数只是一个示例,您可以定义自己的函数。调用next()
会继续请求链。