加载URL之前重定向

时间:2012-08-12 23:18:46

标签: node.js express passport.js

我正在开发一个node.js应用程序,我正在使用护照来构建OAuth身份验证系统。在配置后,我可以通过每个资源加载中的请求对象访问用户。但我的问题是:如何在每次加载URL之前检查 - 使用app.get定义的资源('/',function(..){...}) - 如果用户是loged并且重定向客户端,如果不是loged。我只能在每种方法中添加测试,但这不是我想要的。

谢谢!

1 个答案:

答案 0 :(得分:2)

您需要一个用于检查用户是否已登录的中间件。

isAuthenticated = function (req, res, next) {
  if (req.user)
    return next(); // All good, let the route handler process the request.
  else
    res.redirect('/login'); // Not logged in.
}

并在每个需要登录的路线上使用它:

app.get('/something', isAuthenticated, function (req, res) {
  // Only in here if the user is authenticated.
});

您也可以通过执行app.use(isAuthenticated)在每条路径上使用中间件,但是您需要在方法中使用额外的逻辑来不创建到/login的无限重定向循环等。