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