我正在开发一个 node.js 应用程序,我在其中使用护照来构建 OAuth 身份验证系统。配置后,我可以在每个资源加载中通过请求对象访问用户。但我的问题是:如何在每个 URL 加载之前检查 - 使用 app.get('/', function(..) {...}) 定义的资源 - 用户是否已登录,如果没有则重定向客户端登录。我可以在每种方法中添加一个测试,但这不是我想要的。
谢谢!
我正在开发一个 node.js 应用程序,我在其中使用护照来构建 OAuth 身份验证系统。配置后,我可以在每个资源加载中通过请求对象访问用户。但我的问题是:如何在每个 URL 加载之前检查 - 使用 app.get('/', function(..) {...}) 定义的资源 - 用户是否已登录,如果没有则重定向客户端登录。我可以在每种方法中添加一个测试,但这不是我想要的。
谢谢!
您需要一个检查用户是否登录的中间件。
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.
});
您也可以通过 do 在每条路由上使用中间件app.use(isAuthenticated)
,但是您需要在方法中添加额外的逻辑才能不创建到 的无限重定向循环/login
等。