如何保护express.js中的路由?

Sat*_*ato 4 node.js express passport.js

例如,在Meteor中,有类似的东西

Router.plugin('ensureSignedIn');
Router.plugin('ensureSignedIn', {
  except: ['home', 'atSignIn', 'atSignUp', 'atForgotPassword']
});
Run Code Online (Sandbox Code Playgroud)

因此,未签名的用户无法访问除上述四个以外的其他路由.

如何在express.js中执行此操作?我也在使用passport.js.

Ash*_*y B 15

我不熟悉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
});
Run Code Online (Sandbox Code Playgroud)

ensureAuthenticated功能只是一个例子,您可以定义自己的功能.呼叫next()继续请求链.

  • 不知道,如果您想保护设置的路径,您可以使用中间件,例如`app.use('/user/*', ensureAuthenticated)` 将保护任何匹配的路由。 (2认同)