給定兩個中間件,你如何添加一個會先被命中的東西,然後確定哪個中間件傳遞了請求。該請求只能被丟棄或轉發到其中一箇中間件,而不能同時發送。如何跳過或跳轉中間件? (節點)
app.use(function *(next) {
if (isAuthenticated)
*private middleware*
else
*use public middleware*
});
更具體地:
我有一個主頁/
應該取決於如果用戶已登錄在與否具有可變的響應(使用基於令牌的身份驗證這裏)。爲了簡單起見,如果請求用戶沒有令牌,則public.html
是響應,而private.html
是請求承載有效令牌。
現在這將很容易,只是在一個函數中實現,但我想分開路由器,這將保持代碼更易於管理。
所以我需要以某種方式能夠選擇哪個中間件路由器的請求去吧?不知道該怎麼做。
var publicR = new router();
publicR.get('/', function *(next) {
....public.html....
});
var privateR = new router();
privateR.get('/', function *(next) {
....private.html....
});
app.use(function(){
if(isAuthenticated)
...use privateR.routes();
else
...use publicR.routes();
});
只需使用一個自定義中間件處理程序來檢查條件並自行決定調用哪個其他函數。 – jfriend00
@ jfriend00對不起,我沒有關注,你認爲'要調用哪個函數'是什麼意思? – House3272
而不是依賴中間件的菊花鏈,如果需要的話,調用你已經定義的函數,同時傳遞'req'和'res'。 –