【发布时间】:2012-01-12 17:33:38
【问题描述】:
这是我第一次使用 Express'app.all()。当用户通过外部 oAuth 提供商注册时,我仍然需要他们在返回站点后提供电子邮件。我基本上在数据库中将它们设置为非活动状态并检查req.session.active。
我正在做的是
app.all('*', function(req, res, next) {
if(!req.session.active) {
if(req.path == '/complete_signup') {
next();
} else {
return res.redirect('/complete_signup');
}
}
});
但这似乎不起作用。如何正确检查用户是否已被重定向?
如果您可以建议app.all() 以外的方法,那也可以。
编辑:
再看一遍,这是可行的,但似乎没有加载任何外部资源(样式表、javascript 等),因为它们与 req.path 不匹配。
【问题讨论】:
-
该示例将导致每个未经身份验证的请求都转到 /complete_signup。如果您使用的是 static 或 staticCache ,您可以将该中间件移动到比路由中间件更高的位置,以便在 app.all() 有机会吃掉它之前更改以提供这些文件。
-
奇怪的是你的外部资源没有加载,因为通常静态中间件在路由器之前。
-
DeaDEnd,路由器中间件会自动绑定在第一个 app.get/post/delete/put/all 上。因此,如果他在设置其他中间件之前绑定路由,则路由器将是堆栈中的第一个。
标签: javascript node.js express