1
这是我第一次使用Express'app.all()
。当用户通过外部oAuth提供商注册时,我仍然需要他们在返回网站后提供电子邮件。我基本上将它们设置为在数据库中处于非活动状态并检查req.session.active
。在ExpressJS中处理重定向,同时避免重定向循环
我在做什么是
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。如果您使用的是静态或静态缓存,则可以将该中间件移动到高于路由中间件的位置,以便在app.all()有机会使用该文件之前对这些文件进行更改。 – 2012-01-12 18:26:14
奇怪的是,您的外部资源未加载,因为通常静态中间件会在路由器之前运行。 – fent 2012-01-13 17:36:07
DeaDEnd,路由器middlware在第一个app.get/post/delete/put/all时自动绑定。因此,如果他在建立其他中间件之前绑定路由,则路由器将成为堆栈中的第一个。 – 2012-01-13 17:55:26